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

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>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值