spring注解-爱代码爱编程
Spring注解
Q:什么是基于Java的Spring注解配置? 给一些注解的例子?
基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。
@Configuration:用来标记类可以当做一个<beans></beans>的定义,被Spring IOC容器使用。
@Bean注解:表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文。
Q:怎样开启注解装配?
注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在Spring配置文件中配置 <context:annotation-config/>元素。
Q:@Required 注解
这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。
Q:@Autowired 注解
@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。
Q:@Qualifier 注解
当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用可以消除这种混淆。
原理:指定需要装配的确切的bean的name属性,此时相当于按照name进行装配。
Q:@AutoWired和@Resource的区别
@AutoWired默认以类型进行查找,@Resource默认以名称进行查找
@AutoWired(required=false) + @Qualifier("user") == @Resource(name="user")
Q:@Component和@Bean的区别是什么
作用对象不同。@Component注解作用于类,而@Bean注解作用于方法。
@Component注解通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中(我们可以使用@ComponentScan注解定义要扫描的路径)。@Bean注解通常是在标有该注解的方法中定义产生这个bean(即方法需要返回一个Bean给Spring容器),告诉Spring这是某个类的实例,当我需要用它的时候还给我。
@Bean注解比@Component注解的自定义性更强,而且很多地方只能通过@Bean注解来注册bean。比如当引用第三方库的类需要装配到Spring容器的时候,就只能通过@Bean注解来实现。
Q:声明为Bean的注解有哪些
@Component注解。通用的注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪一个层,可以使用@Component注解标注。
@Repository注解。对应持久层,即Dao层,主要用于数据库相关操作。
@Service注解。对应服务层,即Service层,主要涉及一些复杂的逻辑,需要用到Dao层(注入)。
@Controller注解。对应Spring MVC的控制层,即Controller层,主要用于接受用户请求并调用Service层的方法返回数据给前端页面。