spring中Bean的装配

1.Bean的声明。Bean有两种创建方式,一种是通过xml创建Bean,另一种是通过注解创建Bean。通过注解创建Bean是spring3之后新加入的特性。

     1.1 通过xml创建Bean

          <bean id="test" class="com.sun.Test"/>

          这是个最简单的bean,其中bean是spring的基本配置单元,通过bean可以创建一个对象。spring的核心是容器,每一个bean就是放在beans容器中。

          id是我们为这个bean指明一个索引,我们可以通过这个id查找bean。

          class标明我们创建bean的对象,即指明这是哪个类的bean。class里边是类路径。

     1.2 通过注解创建Bean

          @Component、@Controller、@Service、@Repository、以及使用@Component自定义的注解

2.Bean的作用域。bean默认是单例模式的,但是有时候我们希望每一次请求bean的时候都可以产生一个新的对象,而不是每一次都是相同的对象。我们可以通过修改bean的scope属性修改其作用域。

     2.1 singleton 单例模式,在spring容器中bean只可以被实例化一次

     2.2 prototype  原型模式,在spring容器中bean可以被实例化任意次

     2.3 request 在一次http请求中,每个bean对应一个实例。这个作用域仅在Web中才有用

     2.4 session 在一次http session请求中,每个bean对应一个实例。这个作用域仅在Web中才有用

     2.5 global-session 在一次http请求中,每个bean对应一个实例。这个作用域仅在protlet中才有用

3.Bean初始化和销毁。我们可以在一个Bean在实例化之前或在销毁之后执行指定动作。只需要在bean标签中配置<bean  init-method=""  destroy-method=""/>就可以指定要执行的方法。如果所有的额Bean有相同的初始化和销毁方法,我们可以在beans容器中设置默认的方法。<beans deafult-init-method=""  deafult-destroy-method="">

4.注入Bean属性。

     4.1 通过构造器注入属性。constructor-arg是通过构造器注入的标签,当后边跟value事说明构造函数中传的是一个基本类型,如果是ref,说明构造函数的参数是一个对象引用。在一个bean中有几个constructor-arg就说明构造函数需要几个参数

<bean id="" class="">
      <constructor-arg value=""/>
      <constructor-arg ref=""/>
</>

     4.2 通过setter方法注入属性。property是通过setter方法注入参数的标签。我们在类中定义一个变量,通过给这个变量设置getter和setter方法。在传参的时候我们就可以使用property来传参。name的值是类中变量的名字,value则是我们要向这个变量赋的值,如果是ref,说明这个变量是一个对象。

<bean id="" class="">
     <property name="" value=""/>
     <property name="" ref=""/>
</>

     4.3 在类中引用一个对象时,我们可以使用setter方法注入,也可以使用内部bean的方法注入对象。标红部分就是内部bean的使用。name指明引用变量的名称,里边的bean指明对象的类路径。  

<bean id="" class="">
    <property name="" value=""/>
    <property name="">
        <bean class=""/>
    </>
</>

     4.4 使用spring的命名空间p装配属性。在使用命名空间p的时候我们要在beans中进行相应的设置即在beans标签中加入   xmlns:p="http://www.springframework.org/schema/p"  然后我们就可以使用  p:  作为bean的左右属性的前缀来装配bean。比如在一个类中有age和school两个属性。其中school是一个对象。我们可以用一下的方式写。age="12"  age就标明要装配的属性,12则是装配的值。school-ref  中的ref则是指明这是一个引用。

<bean id="" class="">
      p:age="12"
      p:school-ref="" 
</>

     4.5 spring还提供了装配集合。包括<list>、<set>、<map>、<props>四种类型。当传递的参数是java.util.Collection的任意类型的时候就要使用list或set,如果参数是java.util.Map或java.util.Properties的时候就要使用map和pops。其中map和props都是键值对的形式,但是map允许键值对为任意形式,而props键和值都只可以是string类型的。

     4.6 使用表达式进行属性的装配。使用表达式我们可以装配只有在运行时候才可以知道的参数。表达式装配是使用spring的表达式语言(SpEL)来完成的。在配置的时候value中使用   #{}   这个标记会告诉编译器,这是spring的表达式。

     使用表达式进行装配可以装配字面值,能够引用bean,properties和方法,可以操作类,在操作类的时候  #{T().methodName()}  T()可以返回指定类的对象。还可以在表达式上执行计算,比较,应用正则等操作。

     4.7 自动检测bean

     spring自动装配的注解有@Autowired、@Inject、@Resource,如果想使用这几个注解需要在xml中进行声明

<context:annotation-config />添加这个注解之后就可以通过以上的注解装配Bean。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值