Spring(手动自动装配、继承、作用域、生命周期及外部属性文件)

 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:util="http://www.springframework.org/schema/util"
 5     xmlns:p="http://www.springframework.org/schema/p"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 7         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
 8 
 9 <bean id="per1" class="com.hanqi.Person">
10     <property name="name" value="张三"></property>
11     <property name="age" value="30"></property>
12     
13     <property name="car">
14         <bean class="com.hanqi.Car">
15             <constructor-arg value="鲁C12345"></constructor-arg>
16         </bean>
17     </property>
18     
19     <property name="bankCards">
20         <list>
21             <value>12345</value>
22             <value>54321</value>
23             <value>12354</value>
24         </list>
25     </property>
26 </bean>
27 
28 
29 <!--****************************************************************************************************-->
30 
31 
32 
33 <bean id="car1" class="com.hanqi.Car">
34     <property name="carNumber" value="鲁C4567"></property>
35 </bean>
36 <bean id="car" class="com.hanqi.Car">
37     <property name="carNumber" value="鲁C45067"></property>
38 </bean>
39 
40 
41 <util:list id="bc1">
42     <value>123456</value>
43     <value>654321</value>
44     <value>123465</value>
45 </util:list>
46 <util:list id="bankCards">
47     <value>123hhh</value>
48     <value>6543oo</value>
49     <value>1234pp</value>
50 </util:list>
51 
52 <util:list id="lcar1">
53     <ref bean="car1"/>
54 </util:list>
55 
56 <bean id="per2" class="com.hanqi.Person">
57     <constructor-arg type="int" value="40"></constructor-arg>
58     <constructor-arg type="java.lang.String" value="李四"></constructor-arg>
59     
60     <property name="car" ref="car1"></property>
61     <property name="bankCards" ref="bc1"></property>
62 </bean>
63 
64 
65 <!-- ************************************************************************************************* -->
66 
67 
68 <!-- 手动装配模式  abstract="true"该对象不能被实例化,只能作为父级Bean的模板使用  p:属性名="属性值"  p:属性名-ref="外部Bean" -->
69 <bean id="per3" abstract="true" class="com.hanqi.Person" p:name="王五" p:age="35" p:car-ref="car1" p:bankCards-ref="bc1"></bean>
70 
71 
72 <!-- **************************************************************************************************** -->
73 
74 
75 <!-- 自动装配模式  autowire="byType"根据类型进行自动装配, 只支持对象类型的属性,相同数据类型的目标Bean只能定义一个,否则就报错-->
76 <bean id="per4" class="com.hanqi.Person" p:name="王五" p:age="35" autowire="byType"></bean> 
77 <!-- autowire="byName"根据名称进行自动装配,目标Bean的id要和属性名相同,才能进行自动装配 -->
78 <bean id="per5" class="com.hanqi.Person" p:name="王五" p:age="35" autowire="byName"></bean>
79 
80 
81 <!-- ************************************************************************************************** -->
82 
83 
84 <bean id="per6" parent="per5"></bean><!-- per6继承了per5并不是所有的属性都可以继承过来,自动装配下的Bean的属性则就不能被继承 -->
85 <bean id="per7" scope="prototype" parent="per3" p:name="王丽" p:age="20"><!--scope="prototype"多例模式,可以在内存中实例化出多个不同的内存地址      继承的同时可以覆盖父类的属性值 -->
86 
87 </bean>
88 </beans>
 1 package com.hanqi;
 2 
 3 import org.springframework.context.ApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 
 6 public class Test 
 7 {
 8     public static void main(String[] args) 
 9     {
10         ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
11         Person per1=(Person)ac.getBean("per1");
12         per1.test();
13         
14         Person per2=(Person)ac.getBean("per2");
15         per2.test();
16         
17 //        Person per3=(Person)ac.getBean("per3");
18 //        per3.test();
19         
20 //        Person per4=(Person)ac.getBean("per4");
21 //        per4.test();
22         
23         Person per5=(Person)ac.getBean("per5");
24         per5.test();
25         
26         Person per6=(Person)ac.getBean("per6");
27         per6.test();
28         
29         Person per7=(Person)ac.getBean("per7");
30         per7.test();
31         
32         Person per7_1=(Person)ac.getBean("per7");
33         
34         if(per7==per7_1)
35         {
36             System.out.println("per7==per7_1");
37         }
38         else
39         {
40             System.out.println("per7!=per7_1");
41         }
42     }
43 }
 1 package com.hanqi;
 2 
 3 import java.util.List;
 4 
 5 public class Person
 6 {
 7     private String name;
 8     private int age;
 9     private List<String> bankCards;
10     private Car car;
11     
12     
13     public Person() {
14         super();
15         System.out.println("这是无参的构造方法被调用");
16     }
17     public Person(String name, int age) {
18         super();
19         this.name = name;
20         this.age = age;
21         System.out.println("public Person(String name, int age)这是有参的构造方法被调用");
22     }
23     
24     public Person(int age,String name) {
25         super();
26         this.name = name;
27         this.age = age;
28         System.out.println("public Person(int age,String name)这是有参的构造方法被调用");
29     }
30     
31     
32     public String getName() {
33         return name;
34     }
35     public void setName(String name) {
36         this.name = name;
37     }
38     public int getAge() {
39         return age;
40     }
41     public void setAge(int age) {
42         this.age = age;
43     }
44     public List<String> getBankCards() {
45         return bankCards;
46     }
47     public void setBankCards(List<String> bankCards) {
48         this.bankCards = bankCards;
49     }
50     public Car getCar() {
51         return car;
52     }
53     public void setCar(Car car) {
54         this.car = car;
55     }
56     
57     
58     
59     public void test()
60     {
61         System.out.println("name="+name+",age="+age);
62         System.out.println("Car="+car);
63         System.out.println("bankCard="+bankCards);
64     }
65     
66     
67     public void init()
68     {
69         System.out.println("初始化方法被调用");
70     }
71     
72     public void destroy()
73     {
74         System.out.println("销毁的方法被调用");
75     }
76 }
 1 package com.hanqi;
 2 public class Car
 3 {
 4     private String carNumber;
 5     
 6     
 7     public Car() {
 8         super();
 9     }
10 
11     public Car(String carNumber) {
12         super();
13         this.carNumber = carNumber;
14     }
15     
16 
17     public String getCarNumber() {
18         return carNumber;
19     }
20 
21     public void setCarNumber(String carNumber) {
22         this.carNumber = carNumber;
23     }
24 
25     @Override
26     public String toString() {
27         return "Car [carNumber=" + carNumber + "]";
28     }
29 }
 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:util="http://www.springframework.org/schema/util"
 5     xmlns:p="http://www.springframework.org/schema/p"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 8         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
 9         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
10 
11 <bean id="per1" class="com.hanqi.Person" init-method="init" destroy-method="destroy"><!--init-method="指定初始化方法名" destroy-method="指定销毁方法名"  -->
12     <property name="name" value="张三"></property>
13     <property name="age" value="30"></property>
14     
15     <property name="car">
16         <bean class="com.hanqi.Car">
17             <constructor-arg value="鲁C12345"></constructor-arg>
18         </bean>
19     </property>
20     
21     <property name="bankCards">
22         <list>
23             <value>12345</value>
24             <value>54321</value>
25             <value>12354</value>
26         </list>
27     </property>
28 </bean>
29 
30 
31 
32 <bean id="per7" class="com.hanqi.Person" scope="prototype" parent="per1" p:name="王丽" p:age="20" init-method="init" destroy-method="destroy">
33     <constructor-arg type="java.lang.String" value="张三"></constructor-arg>
34     <constructor-arg type="int" value="20"></constructor-arg>
35 </bean>
36 
37 
38 <!-- 加载外部配置文件 -->
39 <context:property-placeholder location="classpath:db.properties"/>
40 
41 <bean id="per8" class="com.hanqi.Person">
42     <property name="name" value="${name}"></property><!-- value="${指定外部文件中应有的属性名,给name属性给予赋值}" -->
43     <property name="age" value="${age}"></property>
44 </bean>
45 </beans>
 1 package com.hanqi;
 2 import org.springframework.context.support.ClassPathXmlApplicationContext;
 3 
 4 public class Test2
 5 {
 6     public static void main(String[] args)
 7     {
 8         ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext2.xml");
 9         
10         Person per7=(Person)ac.getBean("per7");
11         per7.test();
12         Person per8=(Person)ac.getBean("per8");
13         per8.test();
14 
15         ac.close();
16     }
17 }

 

posted @ 2016-08-01 21:38  明天会更好!!!!  阅读(246)  评论(0)    收藏  举报