<!-- 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>
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>