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 }