Spring框架中對bean類不同類型屬性的注入方式

1.簡單類型:

假設有bean類Person;其中如下屬性:

private String pname;
	private Integer page;
	private Double pss;
	private List<String> l;
	private Map<String, String> m;
	private Addr addr;
	private String sex;

簡單類型可以直接注入,

<property name="pname">
			<value>wangwu</value>
		</property>

2-list注入方式:

<property name="l">
			<list>
				<value>qqq</value>
				<value>ss</value>
			</list>
		</property>

3-map集合注入:

<property name="m">
			<map>
			<entry key="111" value="233"></entry>
			<entry key="sdd" value="fr"></entry>
			</map>
		</property>
4-引用類型的注入:

<bean id="addr" class="com.bean.Addr">
	<property name="aid" value="1" ></property>
	<property name="aname" value="xian"></property>
	</bean>
	<bean id="p5" class="com.bean.Person">
	<property name="addr" ref="addr">
	</property>
	</bean>
5-匿名內部bean: 不需要指定id屬性

<property name="addr">
			<bean class="com.bean.Addr"><!--new addr() -->
				<property name="name" value="beijing"/>
			</bean>
		</property>
6-值爲null:
<property name="sex">
	<null></null>
	</property>

7- <lisi>:特殊符號的注入:

<property name="pname">
	<value><![CDATA[<lisi>"=]]></value>
	</property>
 8-自動注入:autowire屬性
       1-byName:根據名字注入
       2-byType:根據類型注入

<bean id="dao1" class="com.bean2.Dao1"></bean>
	<bean id="service1" class="com.bean2.Service1" autowire="byName">
	</bean>
	<bean id="action1" class="com.bean2.Action1" autowire="byName">
	</bean>

<bean id="dao2" class="com.bean2.Dao1"></bean>
	<bean id="service2" class="com.bean2.Service1"  autowire="byType" >
	</bean>
	<bean id="action1" class="com.bean2.Action1" autowire="byType">
	</bean>

9-自動掃描注入


1-添加標籤:<context:component-scan base-package="com.bean2"></context:component-scan>
          1-base-package:指定要掃描的包
          2-注意:需要導入:spring-aop-4.0.9.RELEASE.jar
       2-在對應包的類上添加註解:
          1-@Controller:修飾控制層
          2-@Service:修飾業務層
          3-@Repository:修飾持久層
          4-@Component:通用
       3-在需要依賴注入的屬性上添加註解:@Autowired

具體實現:

(1)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" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
                        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
                        http://www.springframework.org/schema/context  
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd  
                        http://www.springframework.org/schema/mvc  
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
	<bean id="p" class="com.bean.Person">
		<!-- <property name="pname" value="lisi"></property> -->
		<property name="pname">
			<value>wangwu</value>
		</property>
	</bean>

	<bean id="p1" class="com.bean.Person">
		<constructor-arg index="0" value="zhangsan"></constructor-arg>
		<constructor-arg index="1" value="12.0"></constructor-arg>
	</bean>
	<bean id="p2" class="com.bean.Person">
		<constructor-arg index="0" value="zhangsan" type="java.lang.String"></constructor-arg>
		<constructor-arg index="1" value="24" type="java.lang.Integer"></constructor-arg>
	</bean>
	<bean id="p3" class="com.bean.Person">
		<property name="l">
			<list>
				<value>qqq</value>
				<value>ss</value>
			</list>
		</property>
	</bean>
	<bean id="p4" class="com.bean.Person">
		<property name="m">
			<map>
			<entry key="111" value="233"></entry>
			<entry key="sdd" value="fr"></entry>
			</map>
		</property>
	</bean>
	<bean id="addr" class="com.bean.Addr">
	<property name="aid" value="1" ></property>
	<property name="aname" value="xian"></property>
	</bean>
	<bean id="p5" class="com.bean.Person">
	<property name="addr" ref="addr">
	</property>
	</bean>
	<bean id="p6" class="com.bean.Person">
	<property name="sex">
	<null></null>
	</property>
	</bean>
	<bean id="p7" class="com.bean.Person">
	<property name="pname">
	<value><![CDATA[<lisi>"=]]></value>
	</property>
	</bean>
</beans>
測試類:

package com.test;

import java.util.List;
import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.bean.Addr;
import com.bean.Person;

public class PersonTest {
public static void main(String[] args) {
	ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
	Person p=(Person)ac.getBean("p");
	String name=p.getPname();
	System.out.println(name);
	System.out.println("----------------");
	Person p1=(Person)ac.getBean("p1");
	String name1=p1.getPname();
	
	Double pss1=p1.getPss();
	System.out.println(name1+","+p1.getPage()+","+pss1);
	System.out.println("----------------");
	Person p2=(Person)ac.getBean("p2");
	String name2=p2.getPname();
	
	Double pss2=p2.getPss();
	System.out.println(name1+","+p2.getPage()+","+pss2);
	System.out.println("----------------");
	Person p3=(Person)ac.getBean("p3");
	List<String> l=p3.getL();
	System.out.println(l.size());
	System.out.println("----------------");
	Person p4=(Person)ac.getBean("p4");
	Map<String, String> m=p4.getM();
	System.out.println(m.get("111"));
	System.out.println("----------------");
	Person p5=(Person)ac.getBean("p5");
	Addr addr=p5.getAddr();
	System.out.println(addr.getAname());
	System.out.println("----------------");
	Person p6=(Person)ac.getBean("p6");
	//p6.setSex("nam");
	System.out.println(p6.getSex()==null);
	System.out.println("----------------");
	Person p7=(Person)ac.getBean("p7");
	//p6.setSex("nam");
	System.out.println(p7.getPname());
	
	
}
}
運行結果:

測試自動注入:其中有3個類Action1,Dao1,service1

Action1類:

package com.bean2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class Action1 {
	@Autowired
	private Service1 service1;

	public Service1 getService1() {
		return service1;
	}

	public void setService1(Service1 service1) {
		this.service1 = service1;
	}
	public void show(){
		System.out.println(service1);
	}
	
}
Dao1類:

package com.bean2;

import org.springframework.stereotype.Repository;

@Repository
public class Dao1 {
}
Service1類:

package com.bean2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class Service1 {
@Autowired
private Dao1 dao1;

public Dao1 getDao1() {
	return dao1;
}
public void setDao1(Dao1 dao1) {
	this.dao1 = dao1;
}
public void show(){
	System.out.println(dao1);
}
}
測試類:

package com.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.bean2.Action1;
import com.bean2.Dao1;
import com.bean2.Service1;

public class Test3 {
	public static void main(String[] args) {
		ApplicationContext ac=new ClassPathXmlApplicationContext("beans3.xml");
		Action1 action=(Action1)ac.getBean(Action1.class);
		action.show();
		/*Dao1 dao=(Dao1)ac.getBean(Dao1.class);
		Service1 service=(Service1)ac.getBean(Service1.class);*/
		action.getService1().show();
		System.out.println(action);
		/*System.out.println(service);
		System.out.println(dao);*/
	}
	
	
}
運行結果:


有生成類;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章