【Spring之若干注解释义】

IOC注解使用方法

一、bean类型注解

第一步:在xml文件中配置context:component-scan

第二步:在类上添加componet注解,component注解衍生出controller、service、repository

一般情况下:

            1、controller添加在展示层的controller上

            2、service添加在服务层的service上

            3、repository添加在持久层的dao上


二、类注解

       1、@ Autowired
             @Autowired默认按类型装配(byType),
             @Autowired是由AutowiredAnnotationBeanPostProcessor类实现
             @Autowired是spring自带的注解
             @Autowired默认情况下要求依赖对象必须存在,如果需要允许null值,可以设置它的required属性为false,如:@Autowired(required=false)
             如果我们想按名称装配(byName)可以结合 @Qualifier 注解进行使用
             @Qualifier在自动按照类型注入的基础之上,再按照 Bean 的 id 注入。它在给字段注入时不能独立使用,必须和@Autowire 一起使用;但是给方法参数注入时,可以独立使用。       
        2、@Resource
              @Resource默认按名称装配(byName),可以通过@Resource的name属性指定名称,如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,当找不到与名称匹配的bean时才按照类型进行装配。
              @Resource属于J2EE JSR250规范的实现,但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
推荐使用@Resource注解,因为它是属于J2EE的,减少了与spring的耦合。这样代码看起就比较优雅。
        3、@Inject
              @Inject是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Named;
              @Inject是JSR330中的规范,需要导入javax.inject.Inject;实现注入。
              @Inject可以作用在变量、setter方法、构造函数上。
        4、@Value
              给基本类型和String类型注入值
              可以使用占位符获取属性文件中的值。


三、@Autowired、@Resource、@Inject区别


       1. @Autowired是spring自带的,@Inject是JSR330规范实现的,@Resource是JSR250规范实现的,需要导入不
同的包
       2. @Autowired、@Inject用法基本一样,不同的是@Autowired有一个request属性
       3. @Autowired、@Inject是默认按照类型匹配的,@Resource是按照名称匹配的
       4. @Autowired如果需要按照名称匹配需要和@Qualifier一起使用,@Inject和@Name一起使用
       改变Bean作用范围的注解
       @Scope:指定 bean 的作用范围,相当于下面的配置:<bean id="" class="" scope=""> 

       value:指定范围的值。取值:singleton prototype request session globalsession
       属性:
       @Value(“${name}”)//name是properties文件中的key


四、生命周期相关注解

        @PostConstruct
        @PreDestroy
        相当于:<bean id="" class="" init-method="" destroy-method="" />
        关于注解和XML的选择问题
        注解的优势:
        配置简单,维护方便(我们找到类,就相当于找到了对应的配置)。
        XML 的优势:
        修改时,不用改源码。不涉及重新编译和部署。


五、配置文件注解      

       @Configuration

      相当于spring的XML配置文件。
      从Spring3.0开始可以使用@Configuration定义配置类,可替换xml配置文件
      配置类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或
      AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义对象,初始化Spring容器


      @Bean

      相当于<bean>标签
      作用为:注册bean对象,主要用来配置非自定义的bean,比如DruidDataSource、SqlSessionFactory
      @Bean标注在方法上(返回某个实例的方法)

      @Bean注解默认作用域为单例singleton作用域,可通过@Scope(“prototype”)设置为原型作用域;


     @ComponentScan

     相当于context:component-scan标签
     组件扫描器,扫描@Component、@Controller、@Service、@Repository注解的类。
     该注解是编写在类上面的,一般配合@Configuration注解一起使用。


    @PropertySource

    相当于context:property-placeholder标签
    编写在类上面,作用是加载properties配置文件

    value[]:用于指定properties文件路径,如果在类路径下,需要写上classpath


    @Import

    相当于spring配置文件中的<import>标签
    用来组合多个配置类,在引入其他配置类时,可以不用再写@Configuration 注解。当然,写上也没问题

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值