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

2017-08-11  本文已影响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/>来简化相应的配置。

上一篇下一篇

猜你喜欢

热点阅读