对于Bean的创建spring容器提供了以下四个注解的支持:
1、@Component 普通的对象创建
2、@Repository dao层实现类的注解
3、@Service service层实现类的注解
4、@Controller controller层实现类的注解
以上四个注解在普通使用中是等效的,但在web项目中为了区分三层架构中不同层之间Bean的创建,为了避免注解使用的混乱,使用后三个注解进行区分。
@Value注解的作用: 注入普通数据类型。
@Autowired 注解,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这样的:
@Qualifier装配实例
可能会有这样一种情况,当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可以使用 @Qualifier 注解和 @Autowired 注解通过指定哪一个真正的 bean 将会被装配来消除混乱。下面是使用 @Qualifier 注解的一个示例。、
@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
@Resource(name=“customerDao”)
private CustomerDao customerDao;
个人建议使用 @Resource注解在字段上,而且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。
零配置-@Configuration
@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的,作用为:配置spring容器(应用上下文)。
@ComponentScan注解代替XML配置方式的
context:component-scan/标签的作用。用于开启SpringIOC的注解扫描。
@PropertySource注解,用于代替
context:property-placeholader/配置,加载properties配置文件。
@Import注解就是代替XML里面的
标签,可以用于依赖第三方包中bean的配置和加载。
@Bean是一个方法级别上的注解,主要用在
@Configuration注解的类里,也可以用在
@Component注解的类里。作用是,
把方法的返回结果放入IOC容器中,并且起个bean的id名称。
@Bean与@Component的区别?
@Component注解的作用是创建一个对象,放入IOC容器中。
@Bean注解并没有创建对象的能力,它只是获取某个方法的返回值,放入IOC容器中。