spring-core(IOC和DI)

spring注入
注入:通过spring的配置文件,为对象的属性进行赋值
set注入:
    原理:通过调用该类的set方法进行属性的注入
    注意:一定要为该类提供set方法
①jdk类型
    I.8种基本数据类型+string

  <bean id="user" class="com.hp.entity.User">
        <property name="id"><value>1</value></property>
        <property name="username"><value>小王</value></property>
        <property name="password"><value>123456</value></property>
    </bean>


    II.数组

 <!-- 数组赋值 -->
        <property name="array">
            <array>
                <value>1</value>
                <value>2</value>
                <value>3</value>
            </array>
        </property>    


    III.List类型

 <!-- list赋值 -->
        <property name="list">
            <list>
                <value>小黑</value>
                <value>小白</value>
                <value>小花</value>
                <value>小黑</value>
            </list>
        </property>


    IV.Set类型

 <!-- set赋值 -->
        <property name="set">
            <set>
                <value>小黑</value>
                <value>小白</value>
                <value>小花</value>
                <value>小黑</value>
            </set>
        </property>


    V.Map类型  

  <!-- Map类型赋值 -->
        <property name="map">
            <map>
                <entry>
                    <key><value>1</value></key>
                    <value>小黑</value>
                </entry>
                <entry>
                    <key><value>2</value></key>
                    <value>小白</value>
                </entry>
                <entry>
                    <key><value>3</value></key>
                    <value>小花</value>
                </entry>
            </map>
        </property>


    VI.Properties(特殊的Map集合 key和value都是String类型)

<!-- Properties类型 -->
        <property name="props">
            <props>
                <prop key="username">小黑</prop>
                <prop key="password">123456</prop>
            </props>
        </property>


    VII.自建类型注入
        <!-- 配置UserDaoImpl的相关信息 -->   

 <bean id="userDao" class="com.hp.dao.UserDaoImpl"></bean>


        <!-- 配置UserServiceImpl的相关信息 -->      

 <bean id="userService" class="com.hp.service.UserServiceImpl">
            <property name="userDao" ref="userDao"></property>
            <!-- ref属性:指向UserDAO实现类对象的ID -->
        </bean>

2.构造注入
    原理:通过有参构造,为对象中的属性进行对应的注入
    注意:必须提供有参构造
    ①<!-- index属性:有参构造方法中参数的下标 -->

 <constructor-arg index="0">
            <value>1</value>
        </constructor-arg>
        <constructor-arg index="1">
            <value>苹果</value>
        </constructor-arg>
        <constructor-arg index="2">
            <value>苹果真好吃</value>
    </constructor-arg>


    ②<!-- name属性:属性的名字 -->

<constructor-arg name="id">
            <value>1</value>
        </constructor-arg>
        <constructor-arg name="orderName">
            <value>苹果</value>
        </constructor-arg>
        <constructor-arg name="describe">
            <value>苹果真好吃</value>
    </constructor-arg>


    ③<!-- type属性:根据属性的类型进行注入 -->     

 <constructor-arg type="java.lang.Integer">
            <value>1</value>
        </constructor-arg>
        <constructor-arg type="java.lang.String">
            <value>苹果</value>
        </constructor-arg>
        <constructor-arg type="java.lang.String">
            <value>苹果真好吃</value>
        </constructor-arg>


3.自动注入
    应用场景:主要应用在自建类型
    I.autowire="byType"  根据类型进行对应的属性注入

<bean id="userService" class="com.hp.service.UserServiceImpl" autowire="byType"></bean>


        扫描整个spring的配置文件,匹配与目标属性注入的相同类型,匹配到之后,自动为该属性进行注入。
    II.autowire="byName" 根据名称进行对应的属性注入  

<bean id="userService" class="com.hp.service.UserServiceImpl" autowire="byName"></bean>


        扫描整个spring的配置文件,匹配与目标属性名称相同的ID,匹配完成后,把由该标签创建的对象,自动注入到属性中
spring-core 核心模块
IOC(Inverse of Control) 控制反转
    控制:给对象中属性赋值的权利
    反转:把对象中属性赋值的权利由代码反转到了spring的配置文件中
    把给属性赋值的权利,由代码反转到了配置文件中
DI(Dependency Injection) 依赖注入
    概念:当一个类型需要另一个类型的时候,这两个类型就产生了依赖关系,那么我们就可以把其中的一个类型作为另一个类型的属性进行对应的注入。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值