一、IOC、DI基本概念
IoC(Inversion of Control)控制反转指的是把对象的创建,初始化,销毁等工作交给容器来做。由容器控制对象的生命周期(传统方式中是由我们程序员主动创建对象、初始化、销毁。将这系列的操作交给容器的过程即为反转)。IOC更多的描述了对象本身,而没有涉及到对象与对象之间依赖关系的处理,于是后续有了依赖注入的概念。依赖注入指的是组件之间依赖关系由容器在运行期决定。程序运行中,组件依赖的其他资源将会由容器动态注入到组件中。现如今我们提到IOC和DI时,大部分场景下都指的是同一个东西。IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序
二、Spring容器创建Bean对象的方式
1、默认调用类的无参构造函数创建对象
2、利用静态工厂方法创建对象
3、利用实例工厂方法创建对象
依赖注入方式(给属性赋值)
1、调用类的构造器注入
2、调用类的setter方法注入
三、Spring容器创建对象的时机
1、默认情况下,Spring容器启动的时候(例如:ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"))会调用类的无参数构造函数创建对象。
2、当注册bean对象的时候,指定了lazy-init="true"属性的时候,在获取对象的时候(例如:调用getBean方法)初始化对象。lazy-init属性值为default、false都为延迟初始化。
四、Spring容器中Bean的作用域
五、Spring容器中Bean的生命周期
六、Spring中配置Bean的几种方式
1、基于xml的配置
<bean id="user" class="com.demo.mvc.model.User" />
2、基于注解的配置
@Controller @RequestMapping("/Hello") public class HelloController { @RequestMapping("/index") @ResponseBody public String index() { return "Hello,index!"; } }
几种常用的注册bean的注解:
@Component:标注一个普通的Spring Bean类(不好归类为以下三种时,常使用该注解)
@Controller:标注一个控制器类
@Service:标注一个业务逻辑类
@Repository:标注一个DAO类
3、基于Java类配置
@Configuration public class ApplicationConfig { @Bean("user") public User getUser(){ return new User(); } }
使用@Configuration注解配置ApplicationConfig类为一个Spring配置类,使用@Bean注解向Spring容器中注册Bean对象。
参考博文:http://www.cnblogs.com/zrtqsk/p/3735273.html