五:bean

一:    如何给集合类型注入值.

java中主要的集合有几种: map set list / 数组

Department类:

 1 public class Department {
 2 
 3     private String name;
 4     private String [] empName;
 5     private List<Employee> empList;
 6     private Set<Employee> empsets;
 7     private Map<String,Employee> empMaps;
 8     
 9     public Set<Employee> getEmpsets() {
10         return empsets;
11     }
12     public void setEmpsets(Set<Employee> empsets) {
13         this.empsets = empsets;
14     }
15     public String[] getEmpName() {
16         return empName;
17     }
18     public void setEmpName(String[] empName) {
19         this.empName = empName;
20     }
21     public String getName() {
22         return name;
23     }
24     public void setName(String name) {
25         this.name = name;
26     }
27     public List<Employee> getEmpList() {
28         return empList;
29     }
30     public void setEmpList(List<Employee> empList) {
31         this.empList = empList;
32     }
33     public Map<String, Employee> getEmpMaps() {
34         return empMaps;
35     }
36     public void setEmpMaps(Map<String, Employee> empMaps) {
37         this.empMaps = empMaps;
38     }
39 
40 }

//Employeel类

 1 public class Employee {
 2     private String name;
 3     private int id;
 4     public int getId() {
 5         return id;
 6     }
 7     public void setId(int id) {
 8         this.id = id;
 9     }
10     public String getName() {
11         return name;
12     }
13     public void setName(String name) {
14         this.name = name;
15     }
16 }
View Code

beans.xml配置文件:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4         xmlns:context="http://www.springframework.org/schema/context"
 5         xmlns:tx="http://www.springframework.org/schema/tx"
 6         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 7                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
 8                 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
 9 
10 <bean id="department" class="com.hsp.collection.Department">
11 <property name="name" value="财务部"/>
12 <!-- 给数组注入值 -->
13 <property name="empName">
14     <list>
15         <value>小明</value>
16         <value>小明小明</value>
17         <value>小明小明小明小明</value>
18     </list>
19 </property>
20 <!-- 给list注入值 list 中可以有相当的对象 -->
21 <property name="empList">
22     <list>
23         <ref bean="emp2" />
24         <ref bean="emp1"/>
25         <ref bean="emp1"/>
26         <ref bean="emp1"/>
27         <ref bean="emp1"/>
28         <ref bean="emp1"/>
29         <ref bean="emp1"/>
30     </list>
31 </property>
32 <!-- 给set注入值 set不能有相同的对象 -->
33 <property name="empsets">
34     <set>
35         <ref bean="emp1" />
36         <ref bean="emp2"/>
37         <ref bean="emp2"/>
38         <ref bean="emp2"/>
39         <ref bean="emp2"/>
40     </set>
41 </property>
42 <!-- 给map注入值 map只有key不一样,就可以装配value -->
43 <property name="empMaps">
44     <map>
45         <entry key="11" value-ref="emp1" /> 
46         <entry key="22" value-ref="emp2"/>
47         <entry key="33" value-ref="emp1"/>
48     </map>
49 </property>
50 <!-- 给属性集合配置 -->【点http协议 referer 】
51 <property name="pp">
52     <props>
53         <prop key="pp1">abcd</prop>
54         <prop key="pp2">hello</prop>
55     </props>
56 </property>
57 </bean>
58 <bean id="emp1" class="com.hsp.collection.Employee">
59 <property name="name" value="北京"/>
60 <property name="id" value="1"/>
61 </bean>
62 <bean id="emp2" class="com.hsp.collection.Employee">
63 <property name="name" value="天津"/>
64 <property name="id" value="2"/>
65 </bean>
66 </beans>
View Code

二: 内部bean

 1 <bean id=”foo” class=”....Foo”>
 2     <property name=”属性”>
 3     <!—第一方法引用-->
 4     <ref bean=’bean对象名’/>
 5     <!—内部bean-->
 6     <bean> 
 7     <properyt></property>
 8 </bean>
 9 </property>
10 </bean>

三: 继承配置

 1 public class Student 
 2 public class Gradate extends Student
 3 
 4 在beans.xml文件中体现配置 
 5 <!-- 配置一个学生对象 -->
 6 <bean id="student" class="com.hsp.inherit.Student">
 7     <property name="name" value="顺平" />
 8     <property name="age" value="30"/>
 9 </bean>
10 <!-- 配置Grdate对象 -->
11 <bean id="grdate" parent="student" class="com.hsp.inherit.Gradate">
12     <!-- 如果自己配置属性name,age,则会替换从父对象继承的数据  -->
13     <property name="name" value="小明"/>
14     <property name="degree" value="学士"/>
15 </bean>

 目前我们都是通过set方式给bean注入值,spring还提供其它的方式注入值,比如通过构造函数注入值!

通过构造函数注入值

1 beans.xml 关键代码:
2 <!-- 配置一个雇员对象 -->
3 <bean id="employee" class="com.hsp.constructor.Employee">
4 <!-- 通过构造函数来注入属性值 -->    
5 <constructor-arg index="0" type="java.lang.String" value="大明" />
6 </bean>

 自动装配bean的属性值

 1 (1)    byName的用法:
 2 <!-- 配置一个master对象 -->
 3 <bean id="master" class="com.hsp.autowire.Master" autowire="byName">
 4 <property name="name">
 5 <value>顺平</value>
 6 </property>
 7 </bean>
 8 <!-- 配置dog对象 -->
 9 <bean id="dog" class="com.hsp.autowire.Dog">
10 <property name="name" value="小黄"/>
11 <property name="age" value="3"/>
12 </bean>

(1)    byType: byType:寻找和属性类型相同的bean,找不到,装不上,找到多个抛异常。

(2)    constructor: autowire="constructor"

说明 : 查找和bean的构造参数一致的一个或

      多个bean,若找不到或找到多个,抛异常。按照参数的类型装配 

(4) autodetect

说明 :  autowire="autodetect"

(3)和(2)之间选一个方式。不确定

       性的处理与(3)和(2)一致。

(5) defualt

这个需要在<beans defualt-autorwire=“指定” />

当你在<beans >指定了 default-atuowrite后, 所有的bean的 默认的autowire就是 指定的装配方法;

如果没有在<beans defualt-autorwire=“指定” /> 没有  defualt-autorwire=“指定” ,则默认是

defualt-autorwire=”no”

(6) no: 不自动装配

原文地址:https://www.cnblogs.com/feimo/p/3090521.html