zoukankan      html  css  js  c++  java
  • Spring:自动装配及注解

    一.自动装配

    自动装配:是使用spring满足bean依赖的一种方法

    spring会站在应用上下文中为某个bean寻找其依赖的bean

    spring中bean有三种装配机制分别是:

    ​ 1.在xml中显式配置

    ​ 2.在java中显式配置

    ​ 3.隐式的bean发现机制和自动装配

    自动装配的方式

    1.autowire -byname(按名称自动装配)

    <bean id="people" class="com.zh.pojo.People" autowire="byName">
    

    2.auto-bytpe(按类型自动装配)

    <bean id="people" class="com.zh.pojo.People" autowire="bype">
    

    使用注解:

    ##注解支持约束
      <context:annotation-config/>
        <!--扫描包下所有组件-->
          <context:component-scan base-package="com.zh"/>
    ##注解说明
    自动装配:
    -@Autowired:通过类型,名字
      如果Autowored不能唯一自动装配属性,则需要通过@Qualifier(value="");
    -@Nullable:字段标记了这个注解,说明这个字段可以为空
    -@Resource:自动装配通过名字,类型
    
    
    -compoent:组件,放在类上,说明这个类被spring管理了,就是bean
       compoent衍生注解,在web开发中,会按照MVC三层架构分层:
    -dao 【@Repository】
    -service 【@Service】
    -controller 【@Controller】
    注:这是个注解的功能都是一样的,都代表将某个类注册在Spring中,装配Bean
    
    作用域:
    -@Scope("singleton")//prototype
    
    
    

    小结:

    xml与注解:

    xml更加万能,适用于任何场合,维护更加方便

    注解 不是自己的类使用不了,维护相对复杂

    xml与注解最佳实践:
    xml用来管理bean
    注解只负责完成属性的注入
    在使用过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持

    @Autowired与@Resourse的区别:

    都是用来自动自动装配的,都可以放在属性字段上

    @Autowired默认通过bytype方式实现,然后byname,而且必须要有这个对象

    @Resourse通过默认byname的方式实现,如果找不到名字,则通过bytype实现,如果两个都找不到,则报错
    执行顺序不同:@Autowired默认通过bytype的方式实现。

    ​ @Resource默认通过byname的方式实现

    Bean的作用域:

    单例模式:(Spring默认机制)一个bean表示一个对象

    <bean id="user" class="com.zh.pojo.User" p:age="18" p:name="zh" scope="singleton"/>
    

    原型模式:每次从容器中get的时候,都会产生一个新对象

    <bean id="user2" class="com.zh.pojo.User" c:age="19" c:name="zfl" scope="prototype"/>
    

    其余的request,session,application这些只能在web开发中使用

  • 相关阅读:
    计算机图形学
    2017.3.20
    史上最强型人养成秘籍: 90 天肥仔变型男实录
    Word 2013发布博客测试
    eeeeeeeeeee
    测试,使用word2013发布博客园博客
    Win7系统桌面便签怎么添加?
    开启两步验证的教程
    【Todo】 cygwin下emacs中M-x shell 中出现乱码
    emacs的LoadPath
  • 原文地址:https://www.cnblogs.com/zh93/p/12861221.html
Copyright © 2011-2022 走看看