欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

Spring框架初识(2)对象,属性的注入

三.使用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 属性,以便之后的调用
Spring框架初识(2)对象,属性的注入

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


	
}

Spring框架初识(2)对象,属性的注入

五.复杂属性的注入

<!-- 注入复杂类型属性值 -->
	<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>
相关标签: spring javaee