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

    科技2022-07-10  148

    Spring IoC配置方式的对比

    XML and 注解 and 纯注解基于XML配置XML指定配置信息Bean的创建Bean的作用范围Bean的生命周期依赖注入 基于注解配置XML指定配置信息不同对象的配置 注解Bean的创建Bean的作用范围Bean的生命周期依赖注入 基于纯注解配置注解指定配置信息不同对象的配置 **如何选择?**

    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包使用
    Processed: 0.042, SQL: 8