您的位置:首页 > 编程语言 > Java开发

SpringIOC容器创建对象及依赖注入的几种方式

2018-01-22 16:41 1291 查看
Spring IOC容器
SpringIOC容器:是spring的核心内容
作用:创建对象,处理对象的依赖关系

IOC容器创建对象
几种方式:
1、调用无参构造
<bean id="user" class="edu.cloud.spring.entity.User"></bean>
2、调用带参构造
<bean id="user2" class="edu.cloud.spring.entity.User">
<constructor-arg value="tom" index="1"></constructor-arg>
<constructor-arg value="101" index="0"></constructor-arg>
</bean>
3、工厂创建对象
工厂类:非静态方法创建对象
<!-- 工厂类的实例 -->
<bean id="UserFactory" class="edu.cloud.spring.entity.UserFactory"></bean>
<!-- 使用实例方法创建对象 -->
<bean id="user4" factory-bean="UserFactory" factory-method="getInstance"></bean>
静态方法创建对象
<!-- (静态)方法创建对象 -->
<!-- class:指定工厂类类型 -->
<bean id="user5" class="edu.cloud.spring.entity.UserFactory" factory-method="getStaticInstance"></bean>

对象依赖关系
DI,依赖注入
1、通过构造
<bean id="user2" class="edu.cloud.spring.entity.User">
<constructor-arg value="tom" index="1"></constructor-arg>
<constructor-arg value="101" index="0"></constructor-arg>
</bean>
2、通过set方法对属性注入【常用】
<bean id="user4" class="edu.cloud.spring.entity.User">
<property name="id" value="110"></property>
<property name="name" value="hhh"></property>
</bean>

<!-- 不用value了,用rel把这个对象引用进来 -->

<!-- 三层架构 依赖注入 -->
<!-- Action -->
<bean id="userAction" class="edu.cloud.second.UserAction">
<!-- property中的name指的是命名setter方法中的attribute部分:eg. setUserService() name为:userService -->
<property name="userService" ref="userService"></property>
</bean>

<!-- UserService -->
<bean id="userService" class="edu.cloud.second.UserService">
<!-- 不用value了,用rel把这个对象引用进来 -->
<property name="userDao" ref="userDao"></property>
</bean>

<!-- UserDao -->
<bean id="userDao" class="edu.cloud.second.UserDao"></bean>

<!-- 内部Bean -->
<bean id="userAction2" class="edu.cloud.second.UserAction">
<property name="userService">
<bean class="edu.cloud.second.UserService">
<property name="userDao">
<bean class="edu.cloud.second.UserDao"></bean>
</property>
</bean>
</property>
</bean>

3、P名称空间,属性注入优化
xml头文件包含:xmlns:p="http://www.springframework.org/schema/p"

<!-- p:属性注入 -->
<bean id="user" class="edu.cloud.second.User" p:id="999" p:name="Jack"></bean>

<!-- p:set方法注入 ref 引用-->
<bean id="userDao" class="edu.cloud.second.UserDao"></bean>
<bean id="userService" class="edu.cloud.second.UserService" p:userDao-ref="userDao"></bean>
<bean id="userAction2" class="edu.cloud.second.UserAction" p:userService-ref="userService"></bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: