当前位置: 代码迷 >> Java面试 >> Java面试-Spring技术要领-Spring注解
  详细解决方案

Java面试-Spring技术要领-Spring注解

热度:70   发布时间:2016-04-17 00:13:34.0
Java面试--Spring技术要点--Spring注解

20  基于Java的Spring注解配置(给一些注解的例子)

基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。

以@Configuration注解为例,它用来标记类可以当做一个bean的定义,被SpringIOC容器使用。另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文。(一般很少用java代码对元数据进行配置)

21  Spring基于注解的容器配置、和开启配置

相对于XML文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系。

注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在Spring配置文件中配置<context:annotation-config/> 元素。(<context:annotation-config/>标签可以开启自动扫描,同时也开启注解装配)

22  Spring注解简介

  • @Required:这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。
  • @Autowired:注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。
  • @Qualifier:当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。

23  @Autowired 和@Resource 的区别

  • @Autowired和@Resource都可以用来装配bean,都可以写在字段上,或者方法上。
  • @Autowired属于Spring的;@Resource为JSR-250标准的注释,属于J2EE的。
  • @Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,例如:@Autowired(required=false),如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired()

@Qualifier("baseDao")

private BaseDao baseDao;

  • @Resource,默认安装名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。例如:

@Resource(name="baseDao")

private BaseDao baseDao;

推荐使用:@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起就比较优雅。

  相关解决方案