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" xmlns:util="http://www.springframework.org/schema/util"
  4     xmlns:context="http://www.springframework.org/schema/context"
  5     xmlns:tx="http://www.springframework.org/schema/tx"
  6     xmlns:p="http://www.springframework.org/schema/p"
  7     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
  9         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
 10 
 11     <!-- 属性注入 通过set方法注入 -->
 12     <bean id="helloWorld" class="com.spring.helloworld.HelloWorld">
 13         <property name="name" value="applicationContext_Spring"></property>
 14     </bean>
 15     <!-- 构造器 要求bean中有对应的构造器(无参构造) -->
 16     <bean id="car" class="com.spring.helloworld.Car">
 17         <constructor-arg value="audo"></constructor-arg>
 18         <constructor-arg>
 19             <value><![CDATA[<ATARZA>]]></value>
 20         </constructor-arg>
 21         <constructor-arg value="200"></constructor-arg>
 22         <constructor-arg value="200"></constructor-arg>
 23     </bean>
 24     <!-- 注入 -->
 25     <bean id="car2" class="com.spring.helloworld.Car">
 26         <property name="name" value="car2Name"></property>
 27         <property name="brand" value="car2Brand"></property>
 28         <property name="price" value="1"></property>
 29         <property name="speed" value="100000"></property>
 30     </bean>
 31 
 32     <!-- 引用 ref -->
 33     <bean id="person" class="com.spring.helloworld.Person">
 34         <property name="name" value="jack"></property>
 35         <property name="age" value="11"></property>
 36         <property name="car" ref="car"></property>
 37     </bean>
 38 
 39     <!-- 集合属性 list -->
 40     <bean id="personListCar" class="com.spring.helloworld.PersonListCar">
 41         <property name="name" value="jack"></property>
 42         <property name="age" value="12"></property>
 43         <property name="cars" ref="cars">
 44             <list>
 45                 <ref bean="car" />
 46                 <ref bean="car2" />
 47             </list>
 48         </property>
 49     </bean>
 50 
 51     <!-- 集合属性map -->
 52     <bean id="personMapCar" class="com.spring.helloworld.PersonMapCar">
 53         <property name="name" value="toms"></property>
 54         <property name="age" value="18"></property>
 55         <property name="cars">
 56             <map>
 57                 <entry key="aaa" value-ref="car"></entry>
 58                 <entry key="bbb" value-ref="car2"></entry>
 59             </map>
 60         </property>
 61     </bean>
 62 
 63     <!-- properties map的子类 -->
 64     <bean id="DataSource" class="com.spring.helloworld.DataSource">
 65         <property name="properties">
 66             <props>
 67                 <prop key="user">root</prop>
 68                 <prop key="password">123456</prop>
 69                 <prop key="jdbcurl">jdbc:mysql:///test</prop>
 70                 <prop key="driverClass">com.mysql.jdbc.Driver</prop>
 71             </props>
 72         </property>
 73     </bean>
 74 
 75     <!-- 配置单例的集合bean 以供多个bean引用 -->
 76     <util:list id="cars">
 77         <ref bean="car" />
 78         <ref bean="car2" />
 79     </util:list>
 80 
 81     <!-- 通过P命名空间为bean的属性配置 -->
 82     <bean id="personP" class="com.spring.helloworld.Person" p:age="20"
 83         p:name="pPerson">
 84     </bean>
 85 
 86 
 87     <bean id="address" class="com.spring.autowire.Address" p:city="beijign"
 88         p:street="lishuiqiao">
 89     </bean>
 90 
 91     <bean id="car" class="com.spring.autowire.Car" p:name="mazida"
 92         p:price="123">
 93     </bean>
 94     <bean id="car2" class="com.spring.autowire.Car" p:name="mazida"
 95         p:price="123">
 96     </bean>
 97 
 98 
 99     <bean id="person" class="com.spring.autowire.Person" p:name="tom"
100         p:address-ref="address" p:car-ref="car">
101     </bean>
102     <!-- 通过名字自动装配 根据bean的名字和当前bean的setter 风格的属性名进行自动装配 -->
103     <bean id="person" class="com.spring.autowire.Person" p:name="tom"
104         autowire="byName">
105     </bean>
106     <!-- Person [name=tom, address=null, car=null] -->
107 
108     <!-- 根据类型匹配 根据bean的类型和当前bean的属性类型进行自动装配 -->
109     <!-- 配置多个类型: [com.spring.autowire.Car] is defined: expected single matching 
110         bean but found 2: car,car2 -->
111     <bean id="person" class="com.spring.autowire.Person" p:name="tom"
112         autowire="byType">
113     </bean>
114 
115     <!-- 生命周期 -->
116     <bean id="car" class="com.spring.cycle.Car" init-method="init"
117         destroy-method="destory">
118         <property name="brand" value="audi"></property>
119     </bean>
120 
121     <!-- 通过静态工厂方法配置bean 注意不是配置静态工厂方法实例,而是配置bean实例 class 工厂方法的全类名 factory-method 
122         静态工厂的方法名 constructor-arg 静态工厂的参数 -->
123     <bean id="car1" class="com.spring.factory.staticCarFactory"
124         factory-method="getCar">
125         <constructor-arg value="audi"></constructor-arg>
126     </bean>
127     <!-- 配置工厂的实例 -->
128     <bean id="carFactory" class="com.spring.factory.InstanceCarFactory">
129     </bean>
130     <bean id="car2" factory-bean="carFactory" factory-method="getCar">
131         <constructor-arg value="audi"></constructor-arg>
132     </bean>
133 
134     <!-- 使用bean的scope属性来配置bean的范围 singleton:默认值,使用单例工厂模式(每次得到的都是同一个对象,用==作比较返回true) 
135         prototype:原型的。容器初始化是不创建bean的实例。在每次请求是都创建一个新的bean实例,并返回 -->
136 
137     <bean id="address" class="com.spring.scope.Address" p:city="beijing"
138         p:street="lishuiqiao" scope="singleton">
139     </bean>
140 
141     <!-- 抽象bean:bean的abstract属性为true ,这样的bean不能被IOC容器实例化,只能用来被继承 若某一个bean的class属性没有制定,则该bean必须是一个抽象bean -->
142     <bean id="address" p:city="beijign" p:street="lishuiqiao"
143         abstract="true"></bean>
144 
145     <!-- bean的继承 使用bean的parent 属性指定继承 -->
146 
147     <bean id="address2" class="com.spring.autowire.Address" p:street="dongzhimen"
148         parent="address">
149     </bean>
150     <bean id="car" class="com.spring.autowire.Car" p:name="carName"
151         p:price="123">
152     </bean>
153 
154     <!-- bean的依赖,创建一个bean依赖于car这个bean -->
155     <bean id="person" class="com.spring.autowire.Person" p:name="jack"
156         p:address-ref="address2" depends-on="car">
157     </bean>
158 
159     <bean id="address" class="com.spring.spel.Address" p:city="beijign"
160         p:street="lishuiqiao">
161     </bean>
162 
163     <bean id="car" class="com.spring.spel.Car" p:name="mazida"
164         p:price="123">
165         <!-- 使用spel引用类的属性的静态方法 -->
166         <property name="tyrePerimeter" value="#{T(java.lang.Math).PI * 80}"></property>
167     </bean>
168 
169     <bean id="person" class="com.spring.spel.Person">
170         <property name="car" value="#{car}"></property>
171         <property name="name" value="tom"></property>
172         <!-- 使用spel 应用其他bean的属性 -->
173         <property name="city" value="#{address.city}"></property>
174         <!-- 使用spel 应用运算符 -->
175         <property name="info" value="#{car.price>30000?'白领':'金陵'}"></property>
176 
177     </bean>
178 
179 </beans>

 

posted @ 2017-09-07 17:37  duyunchao  阅读(156)  评论(0编辑  收藏  举报