bean属性练习

<!-- beans的标签属性
default-lazy-init:true/false全部设置为延迟或非延迟-->
<!-- bean的标签属性:
id:
class:
lazy-init 延迟实例化bean对象,
autowire:自动装配(注入)
【byName:通过set方法名称注入:速度快】
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl" autowire="byName"></bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
【byType:set通过属性类型方法参数的类型:容错率高】
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl" autowire="byType"></bean>
<bean id="iocDao1" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
【constructor:通过构造方法:首先根据属性名进行装配如果没找到属性名会根据属性类型装配】
【autodetect:】

autowire-candidate:不参与自动装配
primary:优先选择注入
scope:作用域:
singleton:

<!--静态工厂与IOC整合==对于class类里的实例进行new的操作
<bean id="iocfactory" class="com.javalxj.spring.ioc.service.factory.iocfactory"
factory-method="getService"></bean>
-->
<!--非静态工厂与ioc的整合==先去new类再用new好的类调

factory-bean:找到由ioc容器实例化的工厂( 相当于ref)
factory-method:找到工厂的方法
将id改name依然可以用
<bean id="iocfactory" class="com.javalxj.spring.ioc.service.factory.iocfactory"></bean>
<bean id="iocService" factory-bean="iocfactory" factory-method="getService"></bean>
-->
<!--关于DI注入的方式:
1【setter注入:提供set方法按照属性进行注入的 所以必须注明给哪个值进行注入】【】
逻辑层声明属性并进行调用
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl">
<property name="iocDao" ref="iocDao"></property>
</bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
【setter注入的特殊值的注入===list/set====集合的带值的注入】
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl">
  <property name="list">
  <list>
  <value>1</value>
  <ref bean="iocDao"/>
  </list>
  </property>
 </bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
【setter注入的特殊值的注入===map====集合的带值的注入】
 <bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl">
  <property name="map">
  <map>
  <entry key="key1" value="admin1"></entry>
  <entry key="key2" value="admin2"></entry>
  <entry key="key3" value="admin3"></entry>
  </map>
  </property>
 </bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
2、【构造器注入:提供构造方法直接进入类就可以找到 所以不需要写name 只写ref】
在逻辑层实现类中提供一个构造方法
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl">
<constructor-arg ref="iocDao"></constructor-arg>
</bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
问题1:构造器注入:注入多个值
  两个构造方法:======注入数据层
============注入String类型的数据
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl">
  <constructor-arg ref="iocDao"></constructor-arg>
  <constructor-arg value="iocDaoString"></constructor-arg>
</bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"></bean>
解决问题:两个constructor :写一个构造方法一个有两个参数的构造方法,
问题2:如果俩个构造方法====一个参数的构造方法
====两个参数的构造方法
解决问题:改变配置文件的参数个数控制
3、【settter注入与构造器注入的选择与对比】
                        【setter注入】                                                                          【构造器注入】      
 速度:        先走无参的构造方法 ,再执行setter注入                         大量的构造器使得程序变得笨拙
执行时间:  再构造方法之后执行                                                           最先执行
实例化次数:可以实例化多次                                                                 只能实例化一次
优点:
缺点:            
-->
<bean id="iocService" class="com.javalxj.spring.ioc.service.impl.iocServiceimpl" autowire="byType"></bean>
<bean id="iocDao" class="com.javalxj.spring.ioc.dao.impl.iocDaoImpl"  ></bean>
<bean id="userDao" class="com.javalxj.spring.ioc.dao.impl.userDaoImpl"></bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值