Spring使用配置文件进行IOC与DI开发细碎注意点

(一)IOC配置文件注意点

【1】别名操作

通过alias标签指定bean的别名

<alias name="要起别名的bean的id" alias="要指定的别名"/>

【2】单例与多例模式,bean的生命周期

单例模式生命周期:bean在单例模式下,spring容器启动时解析xml发现该bean标签后,直接创建该bean的对象存入内部map中保存,此后无论调用多少次getBean()获取该bean都是从map中获取该对象返回,一直是一个对象。此对象一直被Spring容器持有,直到容器退出时,随着容器的退出对象被销毁。

多例模式生命周期:bean在多例模式下,spring容器启动时解析xml发现该bean标签后,只是将该bean进行管理,并不会创建对象,此后每次使用 getBean()获取该bean时,spring都会重新创建该对象返回,每次都是一个新的对象。这个对象spring容器并不会持有,什么销毁取决于使用该对象的用户自己什么时候销毁该对象。

【3】懒加载机制

懒加载机制就是可以规定指定的bean不在启动时立即创建,而是延后到第一次用时才创建,从而减轻在启动过程中对时间和内存的消耗。

懒加载机制只对单例bean有作用,对于多例bean设置懒加载没有意义。

懒加载局部配置:true为使用懒加载,false为不使用懒加载

<bean id="cart" class="cn.ccc.beans.Cart" lazy-init="true"></bean>

懒加载全局配置:在beans标签中配置

<beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"
default-lazy-init="true">

</beans>

补充:如果同时设定全局指定bean的懒加载机制,且配置不相同,则对于该bean局部配置覆盖全局配置。

【4】静态工厂类的配置,工厂类的配置,以及实现FactoryBean接口类的配置

实例工厂类的配置

<bean id="personFactory" class="cn.ccc.factory.PersonInstanceFactory"></bean>
<bean id="person" factory-bean="personFactory" factory-method="getInstance"></bean>

静态工厂类的配置

<bean id="person" class="cn.ccc.factory.PersonStaticFactory" factory-method="getInstance">

getInstance方法必须为static修饰

实现FactoryBean接口类的配置

<bean id="person" class="cn.ccc.factory.PersonSpringFactory"></bean>

(2)DI配置文件注意点

【1】Properties对象配置

<property name="prop">
     <props>
          <prop key="k1">v1</prop>
          <prop key="k2">v2</prop>
          <prop key="k3">v3</prop>
          <prop key="k4">v4</prop>
    </props>
</property>

【2】Map映射的配置

<property name="map">
    <map>
        <entry key="addr" value="王者荣耀"></entry>
        <entry key="addr" value="英雄联盟"></entry>
        <entry key="skill" value="风火轮"></entry>
        <entry key="age" value="19"></entry>
   </map>
</property>

【3】自动装配

在Spring的setXxx方式实现的注入过程中,支持自动装配机制,所谓自动装配机制,会根据要设置的javabean属性的名字 或 类型 到spring中自动寻找对应id 或 类型的<bean>进行设置,从而省去依次配置的过程,简化了配置。

byName:根据javabean中需要注入的属性的名字 ,在spring容器中找对应id的<bean>将该<bean>的对象复制给 当前的属性
byType:根据javabean中需要注入的属性的类型,在spring容器中找对应class类型的<bean>将该<bean>的对象复制给当前的属性

局部配置

<bean id="teacher" class="cn.ccc.beans.Teacher" autowire="byName"></bean>

全局配置,在beans中配置

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"
default-autowire="byName"></beans>

补充:byType方式 根据类型进行匹配,可能匹配到多个<bean>,此时会抛出异常。而byName是通过id来寻找<bean>,id没有重复,不会有这方面的问题,所以推荐使用byName方式。

使用自动转配前提是有setXxx方法,才能进行自动装配。

 

详细重点请参考

IOC:https://blog.csdn.net/c17315377559/article/details/94284210

DI:https://blog.csdn.net/c17315377559/article/details/94318276

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值