往期精选(欢迎转发~~)
本文主要讲解Spring通过注解装配Bean的常用方式,包括@Component、@Repository、@Service、@Controller、@Autowired、@Resource和@Qualifier。
前言
目前学习java也有一段时间,比较不适应的就是java的各种注解,因为它里面包含了太多的东西,然后使用的姿势也各不相同,今天就简单做个总结和记录,扫一次盲后,后续使用就畅通无阻。
什么是注解
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点:
-
如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么.xml文件又会非常多,总之这将导致配置文件的可读性与可维护性变得很低。
-
在开发中在.java文件和.xml文件之间不断切换,是一件麻烦的事,同时这种思维上的不连贯也会降低开发的效率。
为了解决这两个问题,Spring引入了注解,通过"@XXX"的方式,让注解与Java Bean紧密结合,大大减少了配置文件的体积,又增加了Java Bean的可读性与内聚性。
常用注解
下面直接copy语言中文网的解释:
-
@Component:可以使用此注解描述 Spring 中的 Bean,但它是一个泛化的概念,仅仅表示一个组件(Bean),并且可以作用在任何层次。使用时只需将该注解标注在相应类上即可。
-
@Repository:用于将数据访问层(DAO层)的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
-
@Service:通常作用在业务层(Service层),用于将业务层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
-
@Controller:通常作用在控制层(如 Struts2 的 Action),用于将控制层的类标识为 Spring 中的 Bean,其功能与 @Component 相同。
-
@Autowired:用于对 Bean 的属性变量、属性的 Set 方法及构造函数进行标注,配合对应的注解处理器完成 Bean 的自动配置工作。默认按照 Bean 的类型进行装配。
-
@Resource:其作用与 Autowired 一样。其区别在于 @Autowired 默认按照 Bean