【spring】属性注入

      spring的属性注入是bean管理中的一个非常重要的内容,它可以通过有参数的构造函数注入属性,也可以通过set方法注入属性。包括基本类型的属性注入、对象类型的属性注入和复杂类型的属性注入。

一.基本类型

有参数构造

代码实现:

public class User{

	private String username;

	public User(String username) {
		this.username = username;
	}

	public void test1(){
		System.out.println("User....."+username);
	}	
}

spring配置文件实现:

        <!-- 使用有参数的构造注入属性 -->
        <bean id="user" class="cn.itcast.property.User">
        	<!-- 使用有参的构造注入 -->
        	<constructor-arg name="username" value="张三"></constructor-arg>
        </bean>

      有参数的构造函数注入属性的时候用的是<constructor-arg/>标签。

set方法设置

代码实现:

public class Book {

	private String bookname;
	//set方法
	public void setBookname(String bookname) {
		this.bookname = bookname;
	}
	
	public void demobook(){
		System.out.println("book......."+bookname);
	}	
}

spring配置文件实现:

        <!-- 使用set方法注入属性 -->
        <bean id="book" class="cn.itcast.property.Book">
        	<!-- 注入属性值 
        		name属性值:类里面定义的属性名称
        		value属性:设置具体的值 -->       	
        	<property name="bookname" value="Spring实战"></property>
        </bean>

      使用set方法注入属性时用的是<property/>标签。

二.对象类型

      我们在项目实战中,service一般都需要调用dao,这时候就需要把dao对象注入到service中。首先我们创建UserService和UserDao两个类,并在UserService类中定义UserDao类型的属性。

public class UserService {

	//1.定义dao类型属性
	private UserDao userDao;
	//生成set方法
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	public void add(){
		System.out.println("service.........");
		//在service里面得到dao类对象,才能调用dao里面的方法
		userDao.add();
	}
}
public class UserDao {

	public void add(){
		System.out.println("dao.........");
	}
}

      在配置文件中创建userService和userDao对象,并将userDao注入到userService中。

        <!-- 注入对象类型属性 -->
        <!-- 配置service和dao对象 -->
        <bean id="userDao" class="cn.itcast.ioc.UserDao"></bean>
        <bean id="userService" class="cn.itcast.ioc.UserService">
        	<!-- 注入dao对象
        		name属性值:service类里面属性名称
        		          字符串用value,对象用ref
        		ref属性:dao配置bean标签中id值 -->        	
        	 <property name="userDao" ref="userDao"></property>
        </bean>

三.复杂类型

      除了上面两种类型可以注入之外,还有复杂类型属性的注入,比如数组、list、map、properties等。

public class Person {

	private String[] arrs;
	private List<String> list;
	private Map<String,String> map;
	private Properties properties;

	public void setArrs(String[] arrs) {
		this.arrs = arrs;
	}
	public void setList(List<String> list) {
		this.list = list;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	public void setProperties(Properties properties) {
		this.properties = properties;
	}
	
	public void test(){
		System.out.println("arrs:"+arrs);
		System.out.println("list:"+list);
		System.out.println("map:"+map);
		System.out.println("properties:"+properties);
	}
}
<!-- 注入复杂类型属性值 -->
        <bean id="person" class="cn.itcast.ioc.Person">
        	<!-- 数组 -->
        	<property name="arrs">
        		<list>
        			<value>张三</value>
        			<value>李四</value>
        			<value>王五</value>
        		</list>
        	</property>
        	<!-- list -->
        	<property name="list">
        		<list>
        			<value>Tom</value>
        			<value>Bob</value>
        			<value>Mary</value>
        		</list>
        	</property>
        	<!-- map -->
        	<property name="map">
        		<map>
        			<entry key="aa" value="小明"></entry>
        			<entry key="bb" value="小红"></entry>
        			<entry key="cc" value="小美"></entry>
        		</map>
        	</property>
        	<!-- properties -->
        	<property name="properties">
        		<props>
        			<prop key="driverclass">com.mysql.jdbc.Driver</prop>
        			<prop key="username">root</prop>
        		</props>
        	</property>
        </bean>
      今天介绍的都是通过配置文件来实现bean管理,而我们平时经常用的是通过注解来管理bean,所以接下来将为大家介绍注解方式的bean管理。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值