Spring学习-Spring04-设置方式DI

Spring04-设值方式DI

1.普通设值(通过setter方式)
<!-- 设值方式DI -->
	<bean id="star" class="com.caorui.pojo.Star">
		<property name="name" value="彭于晏"></property>
		<property name="age" value="23"></property>
		<property name="partner" ref="partner"></property>
	</bean>
	<bean id="partner" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
	</bean>
2.给集合设值(通过setter方式)
  • pojo层
    • 设置name属性。
  • service层
package com.caorui.service;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import com.caorui.pojo.Partner;

public class SomeService {

	private String[] myArr;
	private Set<Partner> mySet;
	private List<String> myList;
	private Map<String, String> myMap;
	private Properties myPro;
	
	public String[] getMyArr() {
		return myArr;
	}
	public void setMyArr(String[] myArr) {
		this.myArr = myArr;
	}
	public Set<Partner> getMySet() {
		return mySet;
	}
	public void setMySet(Set<Partner> mySet) {
		this.mySet = mySet;
	}
	public List<String> getMyList() {
		return myList;
	}
	public void setMyList(List<String> myList) {
		this.myList = myList;
	}
	public Map<String, String> getMyMap() {
		return myMap;
	}
	public void setMyMap(Map<String, String> myMap) {
		this.myMap = myMap;
	}
	public Properties getMyPro() {
		return myPro;
	}
	public void setMyPro(Properties myPro) {
		this.myPro = myPro;
	}
	@Override
	public String toString() {
		return "SomeService [myArr=" + Arrays.toString(myArr) + ", mySet=" + mySet + ", myList=" + myList + ", myMap="
				+ myMap + ", myPro=" + myPro + "]";
	}

}
  • xml实现
<?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">
	<!-- 设值方式DI -->
	<bean id="partner1" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
	</bean>
	<bean id="partner2" class="com.caorui.pojo.Partner">
		<property name="name" value="成龙"></property>
	</bean>
	<bean id="someService" class="com.caorui.service.SomeService">
		<property name="myArr"> //数组
			<array>
				<value>北京</value>   //普通就是value标签
				<value>上海</value>
			</array>
		</property>
		
		<property name="mySet"> //set集合
			<set>
				<ref bean="partner1"/> //对象引用是ref标签
				<ref bean="partner2"/>
			</set>
		</property>
		
		<property name="myList"> //list
			<list>
				<value></value>
				<value></value>
			</list>
		</property>
		
		<property name="myMap"> //map
			<map>
				<entry key="qq" value="123"></entry>
				<entry key="phone" value="123456"></entry>
			</map>
		</property>
		
		<property name="myPro"> //properties
			<props>
				<prop key="兴趣">足球</prop>
				<prop key="爱好">书法</prop>
			</props>
		</property>
	</bean>
	
</beans>
3.自动注入(byName/byType)
  • byName方式(局部)
    • 设值方式DI byName方式自动注入:spring配置文件中查询id与Star对象中的 属性名partner一致。
<bean id="star" class="com.caorui.pojo.Star" autowire="byName">
		<property name="name" value="彭于晏"></property>
		<property name="age" value="23"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
</bean>
  • byType方式(局部)
    • 设值方式DI byType方式域属性自动注入:spring配置文件中查询与属性类型com.caorui.pojo.Partner一致的bean并进行注入。
<bean id="star" class="com.caorui.pojo.Star" autowire="byType">
		<property name="name" value="彭于晏"></property>
		<property name="age" value="23"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
</bean>
  • 全局配置byName/byType
    • beans标签属性default-autowire。
<?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"
        default-autowire="byType">
	<bean id="star" class="com.caorui.pojo.Star">
		<property name="name" value="彭于晏"></property>
		<property name="age" value="23"></property>
	</bean>
	<bean id="partner" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
	</bean>
</beans>
4.给属性注入空字符串和null
<?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">
	<!-- 设值方式DI -->
	<bean id="star" class="com.caorui.pojo.Star">
		<!-- <property name="name"><value/></property> -->  <!-- 给属性注入空字符串 -->
		<property name="name"><null/></property> <!-- 给属性注入null -->
		<property name="age" value="23"></property>
		<property name="partner" ref="partner"></property>
	</bean>
	<bean id="partner" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
	</bean>
</beans>

5.构造方法注入
  • Star无set/get方法;Partner有。
<?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">
	<!-- 构造方式DI -->
	<!-- 
	<bean id="star" class="com.caorui.pojo.Star">
		<constructor-arg name="name" value="caorui"></constructor-arg>
		<constructor-arg name="age" value="12"></constructor-arg>
		<constructor-arg name="partner" ref="partner"></constructor-arg>
	</bean>
	 -->
	<!--  
	 <bean id="star" class="com.caorui.pojo.Star">
		<constructor-arg index="0" value="caorui"></constructor-arg>
		<constructor-arg index="1" value="12"></constructor-arg>
		<constructor-arg index="2" ref="partner"></constructor-arg>
	</bean>
	 -->
	 
	  <bean id="star" class="com.caorui.pojo.Star">
		<constructor-arg value="彭于晏"></constructor-arg>
		<constructor-arg value="12"></constructor-arg>
		<constructor-arg ref="partner"></constructor-arg>
	</bean>
	<bean id="partner" class="com.caorui.pojo.Partner">
		<property name="name" value="吴彦祖"></property>
	</bean>
</beans>

发布了7 篇原创文章 · 获赞 0 · 访问量 177

猜你喜欢

转载自blog.csdn.net/Fu_si/article/details/104503569
今日推荐