码迷,mamicode.com
首页 > 编程语言 > 详细

Spring笔记②--各种属性注入

时间:2015-08-26 22:18:25      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

Ioc 反转控制 反转资源获取的方向

分离接口与实现

采用工厂模式

采用反转控制

?

Di 依赖注入 依赖容器把资源注入

?

配置bean 通过全类名(反射)

配置形式:基于xml方式

Ioc容器的beanFactory&ApplicationContext

依赖注入的方式:属性注入,构造器注入

?

?

Bean必须要有一个无参的构造函数

Class:bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参的构造函数

id :bean 的标示,id唯一

?

applicationContext 是spring的ioc容器,是一接口。

其实现类:

ClassPathXmlApplicatContext从类的路径下来加载配置文件

Getbean()

FileSystemXmlApplicationContext

?

属性注入

通过setter方法注入bean的属性值或依赖的对象

属性注入使用<property>元素,使用name属性指定bean的属性名称,value属性或<value>子节点指定属性值。

属性注入是实际应用中最常见的注入方式。

<bean id="helloWorld" class="com.test.bean.HelloWorld">

????????<property name="name" value="spring"></property>

????</bean>

构造函数注入

<!-- 通过构造函数配置bean的属性 -->

????<bean id="car" class="com.test.bean.Car">

????????<constructor-arg value="audi" index="0"></constructor-arg>

????????<constructor-arg value="shanghai" index="1"></constructor-arg>

????????<constructor-arg value="30000" index="2" type="double"></constructor-arg>

????</bean>

????

????<bean id="car2" class="com.test.bean.Car">

????????<constructor-arg value="bwm"></constructor-arg>

????????<constructor-arg value="shandong"></constructor-arg>

????????<constructor-arg value="30000" type="int"></constructor-arg>

????</bean>

使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器!

如果value字面的值中包含特殊字符就可以通过<![CDATA[字符串]]>的形式注入。

我们也可通过value子节点进行配置

?

可以使用property的ref属性建立bean之间的引用关系。

????<bean id="person" class="com.test.bean.Person">

????????<property name="name" value="zhangsan"></property>

????????<property name="age" value="20"></property>

????????<property name="car" ref="car2"></property>

????</bean>

?

可以通过一组内置的xml标签来配置集合属性如 list set map

<bean id="person2" class="com.test.bean.collect.Person">

????????<property name="name" value="lisi"></property>

????????<property name="age" value="20"></property>

????????<property name="cars">

????????????<list >

????????????????<ref bean="car" />

????????????????<ref bean="car2" />

????????????</list>

????????</property>

????</bean>

?

?

也可通过内部bean来注入属性

?

<bean id="person2" class="com.test.bean.collect.Person">

????????<property name="name" value="lisi"></property>

????????<property name="age" value="20"></property>

????????<property name="cars">

????????????<list >

????????????????<ref bean="car" />

????????????????<ref bean="car2" />

????????????????<bean class="com.test.bean.Car">

????????????????????<constructor-arg value="ford"></constructor-arg>

????????????????????<constructor-arg value="济南"></constructor-arg>

????????????????????<constructor-arg value="20000" type="int"></constructor-arg>

????????????????</bean>

????????????</list>

????????</property>

?

Map注入

<bean id="newPerson" class="com.test.bean.collect.NewPerson">

????????<property name="name" value="Wangwu"></property>

????????<property name="age" value="20"></property>

????????<property name="cars">

????????????<map>

????????????????<entry key="AA" value-ref="car"/>

????????????????<entry key="BB" value-ref="car2"/>

????????????</map>

????????</property>

????</bean>

?

Properties属性注入

?

????<bean id="dataSource" class="com.test.bean.collect.DataSource">

????????<property name="properties">

????????????<props>

????????????????<prop key="user">root</prop>

????????????????<prop key="password">root</prop>

????????????????<prop key="jdbcUrl">jdbc:mysql:///test</prop>

????????????????<prop key="driverClass">com.mysql.jdbc.Driver</prop>

????????????</props>

????????</property>

????</bean>

?

?

?

?

?

?

?

?

?

?

?

Spring笔记②--各种属性注入

标签:

原文地址:http://www.cnblogs.com/chengzhipcx/p/4761683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!