Spring配置bean
2019-07-15 本文已影响0人
逗比寨主
1.IOC
IOC其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器会返回资源,应用IOC,容器主动地将资源推送给他所管理的组件,组件只需要选择合适的接收方式来接收资源
2.DI
IOC的另外一种表述方式,即组件以一些预先定义好的方式接收来自容器的资源注入
3.XML配置bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
配置Bean
class:bean的全类名,通过反射方式在IOC容器中创建对象,
id:标识容器中的对象的唯一标识
-->
<bean id="hellowWorld" class="com.spring.note.HellowWorld">
<property name="name" value="Spring"></property>
</bean>
</beans>
4.初始化IOC容器
方式一:
BeanFactory:IOC的基本实现,面向Spring本身
方式二:
ApplicationContext:提供了更多的高级特性,是BeanFactory的子接口,一般均使用ApplicationContext创建IOC容器
5.ApplicationContext实现类
ClassPathXmlApplicationContext:从类路径下加载配置文件
FileSystemXmlApplicationContext:从文件系统中加载配置文件
6.依赖注入方式
方式一:
属性注入,通过setter进行注入
<bean id="hellowWorld" class="com.spring.note.HellowWorld">
<property name="name" value="Spring"></property>
</bean>
方式二:
构造方法注入,使用<constructor arg/>标明参数
<bean id="car" class="com.spring.note.Car">
<constructor-arg value="300000" type="double" index="0"></constructor-arg>
<constructor-arg value="JJY" index="1"></constructor-arg>
</bean>
<bean id="car2" class="com.spring.note.Car">
<constructor-arg value="100" type="int" index="0"></constructor-arg>
<constructor-arg value="JJY" index="1"></constructor-arg>
</bean>
或者使用value子节进行配置, 特殊字符可使用CDATA
<bean id="car2" class="com.spring.note.Car">
<constructor-arg index="0">
<value type="int">250</value>
</constructor-arg>
<constructor-arg index="1">
<value><![CDATA[<JJY>]]></value>
</constructor-arg>
</bean>
7.引用对象
使用property的ref属性指定引用,外部Bean
<bean id="user" class="com.spring.note.User">
<property name="name" value="JJY"></property>
<property name="age" value="24"></property>
<property name="car" ref="car2"></property>
<!--
<property name="car" >
<ref bean="car2"></ref>
</property>
-->
</bean>
内部Bean,内部Bean不能被外部引用。
<bean id="user" class="com.spring.note.User">
<property name="name" value="JJY"></property>
<property name="age" value="24"></property>
<property name="car">
<bean class="com.spring.note.Car">
<constructor-arg value="100000" type="double"></constructor-arg>
<constructor-arg value="奇瑞QQ"></constructor-arg>
</bean>
</property>
</bean>
8.级联属性
级联属性赋值时,必须先要初始化
<bean id="user" class="com.spring.note.User">
<constructor-arg value="JJY"></constructor-arg>
<constructor-arg value="30"></constructor-arg>
<constructor-arg ref="car2"></constructor-arg>
<property name="car.speed" value="30"></property>
</bean>
9.集合属性
有内置的集合标签 list、map、set、Propertise
List:
<bean id="house" class="com.spring.note.House">
<property name="price" value="1000"></property>
<property name="address" value="武汉"></property>
</bean>
<bean id="person" class="com.spring.note.Person">
<property name="name" value="JJY"></property>
<property name="houseList">
<list>
<bean class="com.spring.note.House">
<property name="price" value="2000"></property>
<property name="address" value="上海市"></property>
</bean>
<ref bean="house"></ref>
</list>
</property>
</bean>
Map:
<bean id="person2" class="com.spring.note.Person">
<property name="name" value="JJY"></property>
<property name="houseMap">
<map>
<entry key="1" value-ref="house"></entry>
<entry>
<key>
<value>2</value>
</key>
<ref bean="house1"></ref>
</entry>
<entry>
<key>
<value>3</value>
</key>
<bean class="com.spring.note.House">
<property name="price" value="8000"></property>
<property name="address" value="北京"></property>
</bean>
</entry>
</map>
</property>
</bean>
Properties:
<property name="dataSource">
<props>
<prop key="userName">root</prop>
<prop key="pwd">123456</prop>
<prop key="jdbcUrl">jdbc:mysql:localhost:3303 </prop>
</props>
</property>
Util Schema:
<util:list id="houseList">
<ref bean="house"></ref>
<ref bean="house1"></ref>
</util:list>
<bean id="person3" class="com.spring.note.Person">
<property name="name" value="傻逼"></property>
<property name="houseList" ref="houseList"></property>
</bean>
p命名空间:
<util:list id="houseList">
<ref bean="house"></ref>
<ref bean="house1"></ref>
</util:list>
<bean id="person4" class="com.spring.note.Person"
p:name="DSB"
p:houseList-ref="houseList">
</bean>