spring ioc 理解
springIOC
作用
springIOC 是sprig的特性。称作控制反转。将对象的创建,初始化,销毁,交给spring容器管理。
原理
在spring容器启动的时候,通过反射的方式,主动加载(或者延迟加载)我们主动配置的bean,已经bean的依赖对象。
好处
在不同的业务之间的相互调用,我们无需去关注业务对象的产生。而更注重业务之间的逻辑,这在复杂工程中显得尤为重要。
spring 构造对象的三种方式
1、采用默认的构造函数创建
<bean class="com.mc.base.learn.spring.bean.Person" id="person">
2、采用静态工厂方法
<bean id="person" class="com.mc.base.learn.spring.factory.PersonStaticFactory" factory-method="createPerson">
3、实例工厂方法
<!-- 实例工程方法需要先创建工厂实例,然后在创建所需对象的时候,将其赋值为factory-bean --> <bean id="personFactory" class="com.mc.base.learn.spring.factory.PersonFactory"></bean> <bean id="person2" factory-bean="personFactory" factory-method="createInstance"></bean>
spring 初始化的三种方式
1、通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法;
public class InitSequenceBean implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("InitSequenceBean: afterPropertiesSet"); } }
2、通过 <bean> 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法;
<bean class="InitSequenceBean" init-method="initMethod"></bean>
3、在指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调
public class InitSequenceBean { @PostConstruct public void postConstruct() { System.out.println("InitSequenceBean: postConstruct"); } }