目录
概况
知识点
- 1. Bean生命周期原理
- 2. 依赖注入原理
- 3. 初始化原理
- 4. 推断构造方法原理
- 5. AOP原理
- 6. 事务原理
先看看入门使用Spring的代码:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = (UserService) context.getBean("userService");
userService.test();
这三行代码做了什么
- 1. 第一行代码,会构造一个ClassPathXmlApplicationContext对象, ClassPathXmlApplicationContext该如何理解,调用该构造方法会实例化得到 一个对象,还会做哪些事情?
- 2. 第二行代码,会调用ClassPathXmlApplicationContext的getBean方法,会得到UserService对象,getBean()是如何实现的?返回的UserService对象和直接new的UserService对象有区别吗?
- 3. 第三行代码,就是简单的调用UserService的test()方法。
光看这三行,并不能体现出来Spring的强大之处,也不能理解为什么需要ClassPathXmlApplicationContext和getBean()方法
但ClassPathXmlApplicationContext已经过时,在Spring MVC和Spring Boot的底层主要用的都是AnnotationConfigApplicationContext,比如:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = (UserService) context.getBean("userService");
userService.test();
AnnotationConfigApplicationContext的用法和ClassPathXmlApplicationContext是非常类似的,只不过需要传入的是一个class,而不是一个xml文件。
而AppConfig.class和spring.xml一样,表示Spring的配置,比如可以指定扫描路径,可以直接定义Bean,比如:
spring.xml中的内容为:
<context:component-scan base- ="