Spring笔记----对象的注入方式

Spring笔记----对象的注入方式

今天为大家分享一些关于ssm三大框架之一——Spring框架的对象注入方式,希望大家多多支持

第一步:导入所需要的的依赖

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

第二步:建立容器(容器名一般为applicationContext.xml 注意:后缀名.xml需要自己打)

右击你的resources文件夹,建立如图所示的xml页面
在这里插入图片描述
建立相应的xml文件之后,容器就建立完了

对象的四种注入方式

第一种:set注入
<bean id="m1" class="com.swjd.bean.Man">
    <!--第一种:依赖注入方式:set注入-->
    <property name="id" value="1"></property>
    <property name="name" value="dd"></property>
    <property name="age" value="18"></property>
    <property name="dog" ref="d1"></property>
</bean>
第二种:带参数构造方法注入
<bean id="m2" class="com.swjd.bean.Man">
    <constructor-arg index="0" type="int" value="2"></constructor-arg>
    <constructor-arg index="1" type="java.lang.String" value="蔡徐坤"></constructor-arg>
    <constructor-arg index="2" type="int" value="20"></constructor-arg>
    <constructor-arg index="3" type="com.swjd.bean.Dog" ref="d1"></constructor-arg>
</bean>
第三种:P命名空间注入(注意:本质是set注入,语法看起来简洁一些)
<bean id="m3" class="com.swjd.bean.Man"
     p:id="3" 
     p:name="八戒" 
     p:age="100" 
     p:dog-ref="d1">
</bean>
第四种:spel表达式注入
<bean id="m4" class="com.swjd.bean.Man">
    <property name="id" value="#{m1.id}"></property>
    <property name="name" value="#{m1.name}"></property>
    <property name="age" value="#{m1.age}"></property>
    <property name="dog" ref="d1"></property>
</bean>

以上就是Spring的四种对象注入方式了,接下来为大家介绍复杂注入方式

1.注入对象(首先在实体类包中创建一个实体类(dog),然后再resources的xml文件夹里利用set注入的方式注入一个对象(d1))
<bean id="d1" class="com.swjd.bean.Dog">
    <property name="id" value="1"></property>
    <property name="name" value="gg"></property>
    <property name="sex" value="母"></property>
</bean>

<bean id="m1" class="com.swjd.bean.Man">
    <!--第一种:依赖注入方式:set注入-->
    <property name="id" value="1"></property>
    <property name="name" value="dd"></property>
    <property name="age" value="18"></property>
    <!--第一种写法-->
    <property name="dog" ref="d1"></property>
    <!--第二种写法-->
    <!--<property name="dog">
        <ref bean="d1"/>
    </property>-->
</bean>

<bean id="m2" class="com.swjd.bean.Man">
    <!--第二种依赖注入方式:带参数构造方法注入-->
    <constructor-arg index="0" type="int" value="2"></constructor-arg>
    <constructor-arg index="1" type="java.lang.String" value="蔡徐坤"></constructor-arg>
    <constructor-arg index="2" type="int" value="20"></constructor-arg>
    <constructor-arg index="3" type="com.swjd.bean.Dog" ref="d1"></constructor-arg>
</bean>

<!-- 第三种依赖注入方式:P命名空间注入(本质是set注入,语法看起来简洁一些)-->
<bean id="m3" class="com.swjd.bean.Man"
    p:id="3"
    p:name="八戒"
    p:age="100"
    p:dog-ref="d1">
</bean>
<!-- 第四种依赖注入方式:spel表达式注入-->
<bean id="m4" class="com.swjd.bean.Man">
    <property name="id" value="#{m1.id}"></property>
    <property name="name" value="#{m1.name}"></property>
    <property name="age" value="#{m1.age}"></property>
    <property name="dog" ref="d1"></property>
</bean>
2.注入数组(可以再resources里面重新建立一个容器)
<property name="hobbies">
	<array>
        	<value>网红</value>
        	<value>玩游戏</value>
        	<value>打地下城</value>
    	</array>
</property>
3.注入集合
<property name="subject">
    <list>
        <value>spring</value>
        <value>mybatis</value>
        <value>java</value>
    </list>
</property>
4.注入map
<property name="map">
    <map>
        <entry key="CN">
            <value>中国</value>
        </entry>
        <entry key="RU">
            <value>俄罗斯</value>
        </entry>
        <entry key="UK">
            <value>美国</value>
        </entry>
    </map>
</property>
5.测试(在test包里面新建一个测试类MyTest)
四种对象注入方式的测试类:
public static void main(String[] args) {
    //1.启动Spring容器
    ClassPathXmlApplicationContext context=
            new ClassPathXmlApplicationContext("这里需要放入resources里面的容器名(后缀不要忘记加上去)");
    //1.拿对象
    System.out.println(context.getBean("m1", Man.class));
    System.out.println(context.getBean("m2", Man.class));
    System.out.println(context.getBean("m3", Man.class));
    System.out.println(context.getBean("m4", Man.class));
}
复杂注入的测试类:
public static void main(String[] args) {
    ClassPathXmlApplicationContext context=
            new ClassPathXmlApplicationContext("这里放复杂注入的容器名,如果没有新建复杂注入的容器则这里是存放复杂注入方法的容器");
    System.out.println(context.getBean("s1", Student.class));
}
以上就是所有的对象注入方式,希望能够帮助到大家,如有不同见解可在评论区讨论,欢迎各位的莅临指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值