Spring 小记 | 02 Spring IoC配置方式的对比

XML and 注解 and 纯注解

在这里插入图片描述

基于XML配置

XML

指定配置信息
<!--导入Bean的头文件约束-->
Bean的创建
<!--1.默认构造函数创建-->
<bean id="..." class="..."></bean>
<!--2.类方法创建-->
<bean id="InstanceFactory" class="..."></bean>
<bean id="..." factory-bean="InstanceFactory" factory-method="..."></bean>
<!--3.类静态方法创建-->
<bean id="..." class="...(StaticFactory)" factory-method="..."></bean>
Bean的作用范围
<bean ... scope="singleton/prototype"></bean>
Bean的生命周期
<!--start.初始化方法-->
<bean ... init-method="..."></bean>
<!--end.销毁方法-->
<bean ... destroy-method="..."></bean>
依赖注入
<!--注入类型-->
<!--1.基本类型和String类型  2.Bean对象  3.集合类型-->

<!--注入方式-->
<!--1.构造函数注入-->
<bean ...>
	<constructor-arg name="..." value="...(基本数据类型、String类型和EL表达式)"/ref="...(bean对象)"></constructor-arg>
</bean>
<!--2.set方法注入-->
<bean ...>
	<property name="..." value="...(基本数据类型、String类型和EL表达式)"/ref="...(bean对象)"></property>
    <!--集合类型-->
    <!--Map结构key-value-->
    <property name="...">
        <map>
            <entry key="...">...</entry>
        </map>
    </property>
    <!--List结构value-->
    <property name="...">
        <array>
            <value>...</value>
        </array>
    </property>
</bean>
<!--3.P空间注入-->
<beans ... xmlns:p="http://www.springframework.org/schema/p" ...>
<bean ... p:varA="...(基本和String类型)" p:varB-ref="...(bean对象)"/></bean>
</beans>

<!--使用Properties文件-->
<context:property-placeholder location="classpath:... .properties"/>

基于注解配置

XML

指定配置信息
<!--导入context头文件约束-->
不同对象的配置
<!--自己编写的类Bean创建-->
<context:component-scan base-package="..."></context:component-scan>
<!--导入的类Bean创建-->
<bean id="" class=""></bean>

注解

Bean的创建
//在类上进行注解
@Component(value="...")
@Controller("...") //展现层对象
@Service("...") //业务层对象
@Repository("...") //持久层对象
Bean的作用范围
//在类或方法上进行注解
@Scope("singleton/prototype")
Bean的生命周期
//在方法上进行注解
//start.初始化方法
@PostConstruct
//end.销毁方法
@PreDestroy
依赖注入
//注入类型
//1.基本类型和String类型  2.Bean对象

//注入方式(在变量上进行注解)
@Value("...(基本数据类型、String类型和EL表达式)")
@Autowired //Bean对象按类型自动注入
@Qulifier(value="...(Baen对象)") //按类型和名称注入
@Resource(name="...(Bean对象)") //按名称注入

//使用Properties文件(在类上进行注解)
@PropertySource("classpath:....properties")

基于纯注解配置

将注解中XML的工作全由注解配置类代替,其余和注解部分一致

注解

指定配置信息
//指定配置类(在类上进行注解) == .xml
@Configruation
//导入其他配置类(在类上进行注解)
@Import(value=ChildConfigruation.class)
不同对象的配置
//自己编写的类(在类上进行注解) == <context:component-scan>
@ComponentScan(value={"..."}/"...")
//导入的类(在方法上进行注解) == <bean id="" class="">
@Bean(name="...")

如何选择?

基本原则:怎么方便怎么来

一般情况而言

  • 注解方式更适合配置自己编写的代码类
  • XML方式更适合对于导入的jar包使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值