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);*/
}
}
運行結果:
有生成類;