Spring详解(三)

Bean的作用域:

       作用域的种类:

       Singleton(单例):使用Singleton定义的Bean在Spring容器中将只有一个实例,也就是说,无论有多少个Bean引用它,始终将指向同一个对象。这也是Spring容器默认的作用域

       prototype(原型):每次通过Spring容器获取的prototype定义的Bean时,容器都将创建一个新的Bean实例。

       request:在一次HTTP请求中,容器会返回该Bean的同一个实例,对不同的HTTP请求将会产生一个新的Bean,而且该Bean只在当前HTTPRequest请求中有效

       session:在一次HTTP session中,容器会返回该Bean的同一个实例,对不同的HTTP请求将会产生一个新的Bean,而且该Bean只在当前HTTPSession内有效

Bean的装配方式:

  1. 基于xml的装配

配置文件中信息:

<!-- 通过构造函数注入参数 -->

        <!-- <constructor-arg index="0" value="tom" />

        <constructor-arg index="1" value="123456" />

        <constructor-arg index="2">

       

               <list>

              

                      <value>"constructorvalue1"</value>

                      <value>"constructorvalue1"</value>

              

               </list>

       

        </constructor-arg>

        <constructor-arg index="3">

       

               <map>

              

                      <entry key="china" value="中国" />

                      <entry key="USA" value="美国" />

                      <entry key="US" value="英国" />

              

               </map>

       

        </constructor-arg>

        <constructor-arg index="4">

       

               <set>

                     

                      <value>张志明</value>

                      <value>郝金涛</value>

                      <value>汪一轮</value>

              

               </set>

       

       

        </constructor-arg>

        <constructor-arg index="5">

       

               <array>

                     

                      <value>aaaaaaaa</value>                      

                      <value>bbbbbbbb</value>                           

              

               </array>

       

        </constructor-arg> -->

<!-- 通过setter方法注入参数 -->

              <property name="username" value="赵云" />

              <property name="password" value="123" />

              <property name="list">

             

                     <list>

                           

                            <value>看书</value>

                            <value>学习</value>

                    

                     </list>

             

              </property>

              <property name="map">

             

                     <map>

                           

                            <entry key="guangshou" value="广州" />

                            <entry key="shanghai" value="上海" />

                            <entry key="shenzhen" value="深圳" />

                    

                     </map>

             

              </property>

              <property name="set">

             

                     <set>

                    

                            <value>关羽</value>

                            <value>张飞</value>

                            <value>赵云</value>

                            <value>马超</value>

                            <value>黄忠</value>

                    

                     </set>          

             

              </property>

              <property name="array">

             

                     <array>

                           

                            <value>aaaaaaaa</value>

                            <value>bbbbbbbb</value>

                    

                     </array>

             

              </property>

  1. 基于Annotation的装配

在Spring中,使用xml文件完全可以实现Bean的装配工作,但如果应用中有很多Bean时,会导致xml配置文件过于臃肿,给后续工作带来维护问题,此时提供了注解技术

@Component:可以使用此注解描述Spring中的Bean,但它是一个泛化概念,仅仅表示一个组件Bean,并且可以作用在任何层次。使用时将该注解直接写在该类上即可。

@Repository:用于将数据访问层(DAO层)的类标识为Spring中的Bean,其功能与Component相同。

@Service:用于业务层(Service层),用于将业务层的类标识为Spring中的Bean,其功能与Component相同。

@Autowired:用于对Bean的属性变量、属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动配置工作。默认按照Bean的类型进行装配。

@Resource:与@Autowired作用相同, 区别在于:@Aautowired默认按照Bean类型装配,而@Resource默认按照Bean的实例名称进行装配

@Qualifier:与Autowired配合使用,会将默认的按Bean类型进行装配,修改为按Bean的实例名称进行装配,Bean的实例名称有@Qualifier注解的参数指定。

代码实例:

  1. 创建一个工程建包建类

  1. 编写配置文件

  1. 注解

给DAO层加注解

给Service层加注解

  1. 编写测试类

  1. 运行结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值