Spring框架初识(2)对象,属性的注入
程序员文章站
2022-03-25 12:24:27
...
一.属性的注入介绍
1.创建对象时向类里面的属性添加属性值
2.spring中两种注入方式
(1)有参的构造方法注入
(2)set方法的注入(重点)
二.使用有参的构造注入属性
第一步:创建一个User实体类,并创建一个有参的构造方法
package cn.xiaoze.zhuru;
public class User {
public String username;
public User(String username) {
this.username=username;
}
public void test1() {
System.out.println("注入....." +username);
}
}
第二步:创建spring的核心配置文件,使用 标签实现有参注入
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
<!-- name:是自定义的bean的名字用于在测试类中找到这个bean并找到相应的对象
class;为需要创建的对象所在的全路径
-->
<bean name="zhuru" class="cn.xiaoze.zhuru.User">
<!-- name:对应类中需要注入属性的属性名
value:为注入的值 -->
<constructor-arg name="username" value="小泽"></constructor-arg>
</bean>
</beans>
第三步:测试类
package cn.xiaoze.zhuru;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Testzhuru {
@Test
public void Test1() {
//注意:要导入ApplicationContext spring的包
ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
User user=(User) context.getBean("zhuru");
user.test1();
}
}
三.使用set方法注入属性
第一步 把标签改成
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
<!-- name:是自定义的bean的名字用于在测试类中找到这个bean并找到相应的对象
class;为需要创建的对象所在的全路径
-->
<bean name="zhuru" class="cn.xiaoze.zhuru.User">
<!-- name:对应类中需要注入属性的属性名
value:为注入的值 -->
<!-- <constructor-arg name="username" value="小泽"></constructor-arg> -->
<property name="username" value="莉莉" ></property>
</bean>
</beans>
第二步给User的username属性创建set,get方法
package cn.xiaoze.zhuru;
public class User {
public String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
第三步就可以测试了
package cn.xiaoze.zhuru;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Testzhuru {
@Test
public void Test1() {
ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
User user=(User) context.getBean("zhuru");
System.out.println(user.getUsername());
}
}
最后可以在控制台打印出username的属性,即注入成功
四.对象的注入
第一步 创建两个类,并添加set,get方法。
Product 类
package cn.spring.test;
import javax.jws.soap.SOAPBinding.Use;
public class Product {
private int id;
private String name;
//注意:将User设置成Product 属性
private User user;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
注意:将User设置成Product 属性,以便之后的调用
User类
package cn.spring.test;
public class User {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void add() {
System.out.println("add......");
}
public static void main(String[] args) {
User user=new User();
user.add();
}
}
之后配置核心文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml文件都要先引入约束,只要会找就可以 spring-framework-4.2.4.RELEASE/docs/spring-framework-reference/html/xsd-configuration.html -->
<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.xsd">
<!-- 在创建Product的时候注入一个User对象
注意,这里要使用ref来注入另一个对象 -->
<bean name="p" class="cn.spring.test.Product">
<property name="name" value="product1"></property>
<property name="user" ref="user" />
</bean>
</beans>
使用ref设置注入对象
第三步 测试类
package cn.spring.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test2zhuru {
@Test
public void testUser2() {
ApplicationContext context = new
ClassPathXmlApplicationContext("bean1.xml");
Product product= (Product) context.getBean("p");
System.out.println(product);
System.out.println(product.getUser());
System.out.println(product.getUser().getName());
product.getUser().add();
}
}
五.复杂属性的注入
<!-- 注入复杂类型属性值 -->
<bean id="person" class="cn.itcast.property.Person">
<!-- 数组 -->
<property name="arrs">
<list>
<value>小王</value>
<value>小马</value>
<value>小宋</value>
</list>
</property>
<!-- list -->
<property name="list">
<list>
<value>小奥</value>
<value>小金</value>
<value>小普</value>
</list>
</property>
<!-- map -->
<property name="map">
<map>
<entry key="aa" value="lucy"></entry>
<entry key="bb" value="mary"></entry>
<entry key="cc" value="tom"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="driverclass">com.mysql.jdbc.Driver</prop>
<prop key="username">root</prop>
</props>
</property>
</bean>
上一篇: ps怎么设置窗口占满屏幕显示?
下一篇: ps退出全屏快捷键是什么?