1、spring Bean的生命周期
1)利用这个类的构造方法来实例化得到一个对象。
2)spring会判断这个对象中是否存在被@Autowired注解了的属性,把这些属性找出来再由spring进行赋值。
3)依赖注入之后,spring会判断对象有没有实现BeanNameAware接口、BeanClassLoaderAware接口、BeanFactoryAware接口,如果实现了,这个对象就要实现接口定义的setBeanName()、setBeanClassLoader()、setBeanFactory()方法,spring会调用这些方法并传入相应的参数。
4)Aware回调后,spring会判断这个对象中是否存在被@PostConstruct注解的方法,存在的话Spring就会调用这个方法
5)spring会判断这个对象是否实现了InitializingBean接口,实现了spring就会调用afterPropertiesSet()方法
6)最后,spring判断这个对象需不需要aop,不需要的话Bean就创建完了,需要的话,就会进行动态代理并生成一个代理对象作为Bean。
2、定义Bean的几种方式
申明式定义:<bean/>,@Bean,@Component,@Service。编程式定义
3、依赖注入的方式
手动注入:set方法注入,构造方法注入。自动注入:@Autowired注解注入,xml的autowire注入。