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));
}