Spring IoC配置方式的对比
XML and 注解 and 纯注解基于XML配置XML指定配置信息Bean的创建Bean的作用范围Bean的生命周期依赖注入
基于注解配置XML指定配置信息不同对象的配置
注解Bean的创建Bean的作用范围Bean的生命周期依赖注入
基于纯注解配置注解指定配置信息不同对象的配置
**如何选择?**
XML and 注解 and 纯注解
基于XML配置
XML
指定配置信息
Bean的创建
<bean id="..." class="..."></bean>
<bean id="InstanceFactory" class="..."></bean>
<bean id="..." factory-bean="InstanceFactory" factory-method="..."></bean>
<bean id="..." class="...(StaticFactory)" factory-method="..."></bean>
Bean的作用范围
<bean ... scope="singleton/prototype"></bean>
Bean的生命周期
<bean ... init-method="..."></bean>
<bean ... destroy-method="..."></bean>
依赖注入
<bean ...>
<constructor-arg name="..." value="...(基本数据类型、String类型和EL表达式)"/ref="...(bean对象)">
</constructor-arg>
</bean>
<bean ...>
<property name="..." value="...(基本数据类型、String类型和EL表达式)"/ref="...(bean对象)">
</property>
<property name="...">
<map>
<entry key="...">...
</entry>
</map>
</property>
<property name="...">
<array>
<value>...
</value>
</array>
</property>
</bean>
<beans ... xmlns:p="http://www.springframework.org/schema/p" ...>
<bean ... p:varA="...(基本和String类型)" p:varB-ref="...(bean对象)"/></bean>
</beans>
<context:property-placeholder location="classpath:... .properties"/>
基于注解配置
XML
指定配置信息
不同对象的配置
<context:component-scan base-package="..."></context:component-scan>
<bean id="" class=""></bean>
注解
Bean的创建
@Component(value
="...")
@Controller("...")
@Service("...")
@Repository("...")
Bean的作用范围
@Scope("singleton/prototype")
Bean的生命周期
@PostConstruct
@PreDestroy
依赖注入
@Value("...(基本数据类型、String类型和EL表达式)")
@Autowired
@Qulifier(value
="...(Baen对象)")
@Resource(name
="...(Bean对象)")
@PropertySource("classpath:....properties")
基于纯注解配置
将注解中XML的工作全由注解配置类代替,其余和注解部分一致
注解
指定配置信息
@Configruation
@Import(value
=ChildConfigruation
.class)
不同对象的配置
@ComponentScan(value
={"..."}/"...")
@Bean(name
="...")
如何选择?
基本原则:怎么方便怎么来
一般情况而言
注解方式更适合配置自己编写的代码类XML方式更适合对于导入的jar包使用