【spring框架】ioc(控制反转)和DI(依赖注入)

1 控制反转概念

  • 以前需要对象a需要对象b,a就要自己去new b(),并且使用完后a要对b进行销毁;
  • 现在所有的类先在spring容器中登记,告诉spring你是个什么东西,你需要什么东西;
  • 然后spring在程序运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的对象:
@Bean("initExecutor")    
public Executor initExecutor() {       
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();        //设置核心线程数         
    return executor;    
}

@Async("initExecutor")    
public void clearMapOfMemory(Class clazz, String className, long delayTime){}
  • 所有类的创建、销毁都由spring来控制。spring控制对象的生命周期,而不是a来控制,控制权发生了反转。

2 能注入的数据

  • 基本类型和String;
  • 其他bean类型;
  • 复杂类型/集合类型。

3 依赖注入的方式

3.1 构造函数注入

 <!-- 配置一个日期对象 -->
 <bean class="java.util.Date" id="now"/>

 <bean class="com.itheima.service.impl.AccountServiceImpl" id="accountService">         
     <constructor-arg value="泰斯特" name="name"/>         
     <constructor-arg value="18" name="age"/>         
     <constructor-arg name="birthday" ref="now"/>     
 </bean>

value用于String或基本类型;
ref用于指定其他的bean类型属性,但这些bean必须是在Ioc容器中出现过的bean对象。

3.2 set方法注入

<bean class="com.itheima.service.impl.AccountServiceImpl2" id="accountService2">         
    <property value="TEST" name="name"/>         
    <property value="21" name="age"/>         
    <property name="birthday" ref="now"/>     
</bean>

name属性对应的是set函数中去掉set的所有字母,全部改为小写

3.3 集合注入

<!-- 复杂类型的注入/集合类型的注入用于给List结构集合注入的标签:
     list array set             
     用于个Map结构集合注入的标签:map props 结构相同,标签可以互换 -->
<bean class="com.itheima.service.impl.AccountServiceImpl3" id="accountService3">         
    <property name="myStrs">             
        <set>                 
            <value>AAA</value>                 
            <value>BBB</value>                 
            <value>CCC</value>             
        </set>         
    </property>   
          
    <property name="mySet">             
        <list>                 
            <value>AAA</value>                 
            <value>BBB</value>                 
            <value>CCC</value>             
        </list>         
    </property>  
           
    <property name="myMap">             
        <props>                 
            <prop key="testC">ccc</prop>                 
            <prop key="testD">ddd</prop>             
        </props>         
    </property>      
         
    <property name="myProps">             
        <map>                 
            <entry value="aaa" key="testA"/>                 
            <entry key="testB">                     
                <value>BBB</value>                 
            </entry>             
        </map>         
    </property>
</bean>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值