美文网首页
Spring框架学习笔记----基于注解配置

Spring框架学习笔记----基于注解配置

作者: 没天赋的学琴 | 来源:发表于2017-08-11 17:25 被阅读0次

      Bean的元数据配置,除了可以通过xml文件来配置,还可以通过注解来进行配置。比较常用的注释有:@Required,@Autowired,@Qualifier还有一些JSR注解。


    @Required

      @Required主要是用来标注set方法,被标注的set方法,一定要在配置文件里进行显示说明配置,否则会抛出 BeanInitializationException。

    @Required注解 必须配置

    @Autowired

      @Autowired可以用来标注属性和标注方法。当用@Autowired对属性进行标注时,可以将属性的set方法删去,并且不需要在配置文件中显示配置,IoC就会通过byType(自动装配的一种方法)的方式自动将数据注入到bean中。 

    对headteacher属性和classroom属性进行配置 bean的配置文件 测试代码 测试结果

      可以看到,不需要再在student的bean里面显示声明就会自动注入到对象中。

      当@Autowired注释到构造方法上的时候,则将会对该方法的参数进行自动配置。

    @Autowired注释到构造方法

    bean的配置文件,再运行时得到的结果与注释到set时是一样的。

      @Autowired注解到其他方法时,与注解到成员变量时类似。当某些属性被设置成@Autowired时,若在配置文件中不存在相应的bean,则会跳出相应的异常;这时,可以通过@Autoowired(required=false)来跳过该类的配置。


    @Qualifier

      若在bean的xml文件中加入多个同样是Classroom类的bean时,Spring在构造时会默认选择第一个bean。若想指定相应的bean,可以通过@Qualifier注解,通过@Qualifier(“bean的id”/“qualifier的value值”),就可以指定注入相应的bean。

    @Qualifier注解 多个同类型bean 通过不同<qualifier>的值来指定bean 测试结果

    @Component

      @Component注解主要是将一个类声明成对应xml文件里的一个bean标签

    @Component注解 测试结果

      使用@Component注解,相当于在配置文件中写下:<bean id="senior" class="edu.stu.pojo"/>,还有其他类似的注解,如:@Reposity、@Service、@Controller这些注解的作用和@Component类似,只是其代表着的是不同的层(持久层、服务层和控制层),而@Component主要是用在较为中立的层中。


    使用JSR注释

      Spring还支持JSR规范的注释

    @Resource

      @Resource与@Autowired的注释作用相似,可是@Resource可以制定ByType或者通过ByName方法来进行自动配置;当只是使用默认的@Resource时,其实按照ByType的方式来进行自动配置;而当加入属性name时,则会按照ByName方式来实现自动配置。

    通过@Resource进行自动配置 新的bean配置文件 测试结果

      若是将name属性删去,因为有多个classsroom的bean,所以运行结果则会抛出NoUniqueBeanDefinitionException的异常。


    反思感受

      通过注解来对bean进行配置,其实本质上还是需要编写xml文件,只是利用注解,可以在一定程度上简化xml文件的编写。

      其实Spring支持的JSR规范还有其他,上面只是简单地介绍@Resource注解;在使用JSR注解之前,需要注册BeanPostProcessor,使用的是下面的语句

    注册BeanPostProcessor

      可是可以通过<context:annotion-config/>来简化相应的配置。

    相关文章

      网友评论

          本文标题:Spring框架学习笔记----基于注解配置

          本文链接:https://www.haomeiwen.com/subject/gqgfrxtx.html