JavaEE--SSH--spring-bean标签,依赖注入
2018-03-19 23:08
671 查看
Spring配置文件中的Bean标签是我们最常配置的一种.
一.简单介绍Bean标签
1.作用:
Bean标签的作用是配置对象,而对象是由Spring自动创建的.默认情况调用对象的无参构造函数,如果没有无参构造函数则不能创建成功.
2.属性:
id:对象在容器中的唯一区分标识,用来获取对象.在配置文件中最好不要起id相同的bean.
class:指定类的完整名称,包含包名.用来反射对象,一般默认调用无参构造.
scope:指定对象的作用范围.
singleton:默认值,单例.
prototype:多例
init-method:指定类中初始化方法名称
destory-method:指定类中销毁方法名称
3.bean的作用范围:
当scope设置为singleton时(单例对象)
一个应用只有一个对象的实例.它的作用范围是整个应用.
当scope设置为prototype时(多例对象)
每次访问对象时,都会创建新的实例.
4.bean的生命周期:
当scope设置为singleton时(单例对象)
创建:当应用加载,创建容器时,对象就被创建了
使用:只要容器在对象一直在.
销毁:当应用卸载销毁容器时对象也被销毁了.
当scope设置为prototype时(多例对象)
创建:当使用对象时,创建新的对象实例.
使用:只要对象在使用中,就一直活着.
销毁:对象长时间不用就会被jvm的垃圾回收器回收.
5.实例化bean的三种方式.
一.使用默认无参构造
例如这种写法:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp"></bean>他会根据默认无参构造函数来创建类对象,如果bean中没有默认无参构造函数将会创建失败.
二.模拟静态工厂的静态方法,自己指定实例化方法
创建一个静态方法public class StaticFactory {
public static OrderService createOrderService(){
return new orderServiceImpl();
}
}配置文件:<bean id="orderService" class="cn.asiainfo.demo01.StaticFactory" factory-method="createOrderService"></bean>三.模拟一个实例工厂.
把工厂的创建交给spring管理.然后使用工厂的bean来调用里面的方法.
创建一个工厂类public class InstanceFactory {
public static OrderService createOrderService(){
return new orderServiceImpl();
}
}配置文件:<bean id="instanceFactory" class="cn.asiainfo.demo01.InstanceFactory"
factory-bean="instanceFactory" factory-method="createOrderService" ></bean>
依赖注入:
依赖注入其实就是由Spring自动替我们把需要使用的对象传入到指定位置.不用我们自己获取.
注入方式有四种:
1.构造方法注入.
我们可以通过在类中定义构造器.来给成员变量进行赋值.但是这个调用赋值的操作是spring替我们做的,我们只需要进行配置.
使用构造方法注入需要使用一个标签.
constructor-arg
属性有:
index:指定参数在构造函数的索引位置
type:指定参数在构造函数的类型
name:指定参数在构造函数中的名称
value:指定参数赋值
ref:赋值引用其他bean类型.
例如:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp">
<constructor-arg name="name" value="家电" />
<constructor-arg name="price" value="10000" />
<constructor-arg name="date" ref="now" />
</bean>
<bean id="now" class="java.util.Date"></bean>2.set方法注入
在类中提供可以注入成员变量值的set方法.也是由spring替我们进行赋值操作.配置好即可.
需要用到的标签:property
属性:
name:找类中set方法后面的部分
ref:引用其他bean类型
value:给属性赋值
例如:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp">
<property name="name" value="家电" />
<property name="price" value="10000" />
<property name="date" ref="now" />
</bean>
<bean id="now" class="java.util.Date"></bean>3:使用p名称空间注入数据(本质上还是使用set方法)
我们依然需要在类中提供可以注入成员变量值的set方法,这里和上一种方式没区别.
但是
配置文件头需要加:<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">bean的写法:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp"
p:name="家电" p:price="10000" p:date-ref="now"></bean>
<bean id="now" class="java.util.Date"></bean>4:注入集合属性.
这种方式就是给类中的集合成员传值,同样也是set方法注入值.
我们可以定义一个类.里面定义数组,list,set,map,properties,然后创建set方法.
在配置文件中这样写:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp">
<property name="mySets">
<set>
<value>aaa</value>
<value>bbb</value>
</set>
</property>
<property name="myArrays">
<array>
<value>aaa</value>
<value>bbb</value>
</array>
</property>
<property name="myLists">
<list>
<value>aaa</value>
<value>bbb</value>
</list>
</property>
<property name="myProps">
<props>
<prop key="AA">aaa</prop>
<prop key="BB">bbb</prop>
</props>
</property>
<property name="myMaps">
<map>
<entry key="AA" value="aaa"/>
<entry key="BB" > <value>bbb</value></entry>
</map>
</property>
</bean>
喜欢的朋友或觉得有帮助的朋友可以点个赞加个关注哦~
一.简单介绍Bean标签
1.作用:
Bean标签的作用是配置对象,而对象是由Spring自动创建的.默认情况调用对象的无参构造函数,如果没有无参构造函数则不能创建成功.
2.属性:
id:对象在容器中的唯一区分标识,用来获取对象.在配置文件中最好不要起id相同的bean.
class:指定类的完整名称,包含包名.用来反射对象,一般默认调用无参构造.
scope:指定对象的作用范围.
singleton:默认值,单例.
prototype:多例
init-method:指定类中初始化方法名称
destory-method:指定类中销毁方法名称
3.bean的作用范围:
当scope设置为singleton时(单例对象)
一个应用只有一个对象的实例.它的作用范围是整个应用.
当scope设置为prototype时(多例对象)
每次访问对象时,都会创建新的实例.
4.bean的生命周期:
当scope设置为singleton时(单例对象)
创建:当应用加载,创建容器时,对象就被创建了
使用:只要容器在对象一直在.
销毁:当应用卸载销毁容器时对象也被销毁了.
当scope设置为prototype时(多例对象)
创建:当使用对象时,创建新的对象实例.
使用:只要对象在使用中,就一直活着.
销毁:对象长时间不用就会被jvm的垃圾回收器回收.
5.实例化bean的三种方式.
一.使用默认无参构造
例如这种写法:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp"></bean>他会根据默认无参构造函数来创建类对象,如果bean中没有默认无参构造函数将会创建失败.
二.模拟静态工厂的静态方法,自己指定实例化方法
创建一个静态方法public class StaticFactory {
public static OrderService createOrderService(){
return new orderServiceImpl();
}
}配置文件:<bean id="orderService" class="cn.asiainfo.demo01.StaticFactory" factory-method="createOrderService"></bean>三.模拟一个实例工厂.
把工厂的创建交给spring管理.然后使用工厂的bean来调用里面的方法.
创建一个工厂类public class InstanceFactory {
public static OrderService createOrderService(){
return new orderServiceImpl();
}
}配置文件:<bean id="instanceFactory" class="cn.asiainfo.demo01.InstanceFactory"
factory-bean="instanceFactory" factory-method="createOrderService" ></bean>
依赖注入:
依赖注入其实就是由Spring自动替我们把需要使用的对象传入到指定位置.不用我们自己获取.
注入方式有四种:
1.构造方法注入.
我们可以通过在类中定义构造器.来给成员变量进行赋值.但是这个调用赋值的操作是spring替我们做的,我们只需要进行配置.
使用构造方法注入需要使用一个标签.
constructor-arg
属性有:
index:指定参数在构造函数的索引位置
type:指定参数在构造函数的类型
name:指定参数在构造函数中的名称
value:指定参数赋值
ref:赋值引用其他bean类型.
例如:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp">
<constructor-arg name="name" value="家电" />
<constructor-arg name="price" value="10000" />
<constructor-arg name="date" ref="now" />
</bean>
<bean id="now" class="java.util.Date"></bean>2.set方法注入
在类中提供可以注入成员变量值的set方法.也是由spring替我们进行赋值操作.配置好即可.
需要用到的标签:property
属性:
name:找类中set方法后面的部分
ref:引用其他bean类型
value:给属性赋值
例如:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp">
<property name="name" value="家电" />
<property name="price" value="10000" />
<property name="date" ref="now" />
</bean>
<bean id="now" class="java.util.Date"></bean>3:使用p名称空间注入数据(本质上还是使用set方法)
我们依然需要在类中提供可以注入成员变量值的set方法,这里和上一种方式没区别.
但是
配置文件头需要加:<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">bean的写法:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp"
p:name="家电" p:price="10000" p:date-ref="now"></bean>
<bean id="now" class="java.util.Date"></bean>4:注入集合属性.
这种方式就是给类中的集合成员传值,同样也是set方法注入值.
我们可以定义一个类.里面定义数组,list,set,map,properties,然后创建set方法.
在配置文件中这样写:<bean id="orderService" class="cn.asiainfo.demo01.OrderServiceImp">
<property name="mySets">
<set>
<value>aaa</value>
<value>bbb</value>
</set>
</property>
<property name="myArrays">
<array>
<value>aaa</value>
<value>bbb</value>
</array>
</property>
<property name="myLists">
<list>
<value>aaa</value>
<value>bbb</value>
</list>
</property>
<property name="myProps">
<props>
<prop key="AA">aaa</prop>
<prop key="BB">bbb</prop>
</props>
</property>
<property name="myMaps">
<map>
<entry key="AA" value="aaa"/>
<entry key="BB" > <value>bbb</value></entry>
</map>
</property>
</bean>
喜欢的朋友或觉得有帮助的朋友可以点个赞加个关注哦~
相关文章推荐
- spring学习笔记 -- day03 IOC中的bean标签、DI依赖注入
- 关于spring boot自动注入出现Consider defining a bean of type 'xxx' in your configuration问题解决方案 标签: spring 201
- spring依赖注入单元测试:expected single matching bean but found 2
- 【JavaWeb-23】spring、IoC控制反转和DI依赖注入入门、基于XML的Bean装配、基于注解的Bean装配
- 详细介绍采用Spring管理Bean和依赖注入方式
- Spring零配置通过注解实现Bean依赖注入总结<转>
- 采用Spring管理Bean和依赖注入
- Spring的依赖注入和管理Bean
- bean标签的属性和spring属性注入
- Spring应用、原理以及粗读源码系列(一)--框架总述、以Bean为核心的机制(IoC容器初始化以及依赖注入)
- spring依赖注入单元测试:expected single matching bean but found 2
- Spring依赖注入,property-ref注入内部bean
- (学习笔记)spring入门之Bean的依赖注入
- 框架学习之Spring 第二节 采用Spring管理Bean和依赖注入
- 【SSH进阶之路】Spring的IOC逐层深入——依赖注入的两种实现类型(四)
- spring源码解读 Bean的依赖注入
- 框架 day36 Spring3 入门,DI依赖注入,装配bean基于xml/注解, 整合Junit4,配置约束自动提示
- JavaEE_SSH_Spring学习笔记(9)----让Spring自动扫描和管理Bean
- 【Spring源码--IOC容器的实现】(六)Bean的依赖注入
- 【SSH进阶之路】Spring的IOC逐层深入——依赖注入的两种实现类型(四)