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

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>
喜欢的朋友或觉得有帮助的朋友可以点个赞加个关注哦~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐