您的位置:首页 > 其它

实现依赖注入的多种方式

2017-11-09 10:45 423 查看
4000

理解构造注入

掌握使用p命名空间实现属性注入

理解不同数据类型的注入方法

设值注入
1.声明一个接口(被注入对象所实现的接口)
2.提供setter方法,动态注入实例通道
3.编写配置文件,配置注入关系

构造注入
1.声明一个接口(被注入对象所实现的接口)
2.带参的构造函数,带参的构造函数和构造类型与Spring要注入的类型要相同(创建带参构造方法,编写带参构造方法后,Java虚拟机不再提供默认的无参构造方法,为了保证使用的灵活性,建议自行添加一个无参的构造方法)
 
3.Spring构造注入在为属性赋值的时候使用了一个标签(与设值注入有区别)

在Spring配置文件中通过<constructor-arg>元素为构造方法传参

<bean id="userDao" class="dao.impl.UserDaoImpl"/>

<bean id="userService" class="service.impl.UserServiceImpl">

    <constructor-arg><ref bean="userDao"/></constructor-arg>

</bean>

1.一个<constructor-arg>元素表示构造方法的一个参数,且使用时不区分顺序。(在配置不区分顺序,和构造方法不需要保持一致)

2.通过<constructor-arg>元素的index属性可以指定该参数的位置索引,位置从0开始

3.<constructor-arg>元素还提供了type属性用来指定参数的类型,避免字符串和基本数据类型的混淆

(限制比较少)

设值注入
通过setter访问器实现
灵活性好,但setter方法数量较多
时效性差
通过无参构造实例化

(参数比较多,想把一些属性设置只读的话,建议使用构造方法)

构造注入
通过构造方法实现
灵活性差,仅依靠重载限制太多
时效性好
通过匹配的构造方法实例化,但建议保留无参构造

p命名空间的特点:使用属性而不是子元素的形式配置Bean的属性,从而简化了配置代码

   对于直接量(基本数据类型/字符串)属性:p:属性名="属性值"

   对于引用Bean的属性:p:属性名=ref="Bean的id"

使用前要先要在Spring配置文件中引入p命名空间
xmlns:p="http://www.springframework.org/schema/p"

使用p命名空间注入属性值

   <bean id="user" class="entity.User" p:age="23"

    p:username="张三" 

    p:email="@xxx.com"/>

   

   <bean id="userService"     class="service.impl.UserServiceImpl"

    p:dao-ref="userDao"/>

注入直接量

    使用<value>标签实现

    注意特殊字符的处理.

引用Bean

    使用<ref>标签实现

    注意bean属性和local属性的区别

使用内部Bean

    <propert name="dao">

        <bean class="dao.impl.UserDaoImpl"/>

    </property>

注入集合类型的属性

    分别使用<list> <set> <map> <props>标签实现

注入null和空字符串值

    使用<null/>注入null值

    使用<value></value>注入空字符串

Properties类型 (链接数据库)

url=...

driverClass=

username=...

passord=..

构造注入
通过构造方法实现
灵活性差,仅靠重载限制太多
时效性好
通过匹配的构造方法实例化,建议保留无参构造

使用p:命名空间注入
简化了配置代码
对于直接量属性和对于引用Bean属性的配置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: