码迷,mamicode.com
首页 > 移动开发 > 详细

Spring的ApplicationContext学习

时间:2020-04-25 17:06:55      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:获取   开始学习   git   save   out   users   工作   文件的   ring   

?? ?? ? 虽然Spring已经火了这么多年了,工作中也有偶尔接触到,却没有怎么深入了解。现在作为一个小白开始学习,也是以此博客作为一个记录,如果有不对的地方,希望大家指出来,共同探讨。
?? ?? ? 今天跟大家一起学习下有关spring中ApplicationContext的相关内容。
?? ?? ? bean是spring中的管理的对象,所有的组件在spring中都会当成一个bean来处理。bean在spring容器中运行,spring容器负责创建bean。

一、ApplicationContext可以用来创建bean

ApplicationContext的三个常用实现类:

  1. ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话,加载不了。
  2. FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)
  3. AnnotationConfigApplicationContext:它是用于读取注解创建容器的。
    example:
    场景:账户操作
    定义了一个业务层操作接口:AccountService
public interface AccountService {
    void saveAccount();
}

业务层接口的实现类:AccountServiceImpl

public class AccountServiceImpl implements AccountService {
    @Override
    public void saveAccount() {
    }
}

定义了持久层操作接口:AccountDao

public interface AccountDao {

    void saveAccount();
}

定义了持久层操作实现类:AccountDaoImpl

public class AccountDaoImpl implements AccountDao {
    @Override
    public void saveAccount() {
        System.out.println("保存账户成功");
    }
}

(1)我们通过ClassPathXmlApplicationContext来创建bean

public class TestClient {

    /**
     * 获取spring的IOC容器,并根据id获取对象
     *
     * @param args
     */
    public static void main(String[] args) {
        // 1、获取核心容器
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        AccountService accountService = (AccountService) context.getBean("accountService");
        AccountDao accountDao = context.getBean("accountDao", AccountDao.class);
        System.out.println(accountService);
        System.out.println(accountDao);
    }
}

技术图片
我们可以看到这两个bean已经创建成功了。
(2)我们通过FileSystemXmlApplicationContext来创建bean,这个时候,我们需要指定配置文件的绝对路径

public class TestClient {

    /**
     * 获取spring的IOC容器,并根据id获取对象
     *
     * @param args
     */
    public static void main(String[] args) {
        // 1、获取核心容器
        ApplicationContext context = new FileSystemXmlApplicationContext("//Users/apple/Documents/git-source/my-source/spring_test_02/src/main/resources/bean.xml");
        AccountService accountService = (AccountService) context.getBean("accountService");
        AccountDao accountDao = context.getBean("accountDao", AccountDao.class);
        System.out.println(accountService);
        System.out.println(accountDao);
    }
}

/Users/apple/Documents/git-source/my-source/spring_test_02/src/main/resources/bean.xml是我本地文件的绝对路径
技术图片
运行结果:
技术图片
他也拿到了两个bean。
关于第三种AnnotationConfigApplicationContext用注解的方式创建bean,我们下一次在演示。

二、ApplicationContext与BeanFactory的区别

  • ApplicationContext:
    • 在构建核心容器时,创建对象采取的策略是立即加载的方式。也就是说一读取完配置文件,马上就创建配置文件中配置的对象。
  • BeanFactory:
    • 在构建核心容器时,创建对象采取的策略是延迟加载的方式,也就说,什么时候根据id获取对象了,什么时候真正创建对象。

Spring的ApplicationContext学习

标签:获取   开始学习   git   save   out   users   工作   文件的   ring   

原文地址:https://www.cnblogs.com/liufei-yes/p/12773426.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!