简单总结一下自己常用的注解。
@SpringBootApplication
复合注解,集 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三注解于一身,实现SpringBoot的自动配置。
@EnableAutoConfiguration
SpringBoot 自动配置核心注解,一旦开启SpringBoot便可以根据当前类路径下的包或者类来配置SpringBean。
@EnableAutoConfiguration的关键点就在于AutoConfigurationImportSelector,而AutoConfigurationImportSelector的关键点在selectImports方法,步骤大致如下:
● LoadFactoryNames方法加载 AutoConfiguration 包下的META-INF目录spring.factories文件中的所有的数据,将其所有的值封装成一个字符串数组。
● 从配置文件META-INF目录spring.factories加载所有可能用到的数据,封装成一个字符串数组;
● 根据起步依赖以及@Conditional相关注解进行过滤,将满足条件的字符串数组返回;
@Configuration
用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。
@ComponentScan
自觉发现并组件扫描。扫的就是标识了@Controller,@Service,@Repository,@Component的注解的类,送到Spring容器中。
@ResponseBody
将controller的方法返回的对象,通过适当的转换器,转换为指定的格式之后,写入到response对象的body区域(响应体中),通常用来返回JSON数据或者是XML。
在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上@ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。
@Controller
将标注的类作为一个控制层的组件放到容器中,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口。
@RestController
相当于@Controller和@ResponseBody的组合注解,把它放类上,给该Controller的所有方法都默认安排上@ResponseBody。
@RequestMapping
用于映射web请求,提供访问路径和参数,负责URL到Controller中的具体函数的映射。
@Import
导入其他配置类。
@ImportResource
加载xml配置文件。
@Autowired
自动导入依赖的Bean。把配置好的Bean拿来用,完成属性、方法的组装,自动装配的工作对类成员变量、方法及构造函数进行标注均可实施。
(required=false)时,就算找不到bean也不报错。
@Service
一般用于修饰service层的组件
@Repository
标注数据访问组件。@Repository修饰的DAO或者repositories类会被@ComponetScan注解发现并配置,同时也不需要为它们提供XML配置项。
@Component
把普通实体类实例化到Spring容器中,泛指组件,当某个组件不能通过业务进行归类时,可以使用这个注解进行标注。
@Qualifier
限定描述符,通过这个标示,指定哪个实现类才是我们所需要的,与@Autowired配合使用。
@Resource
主要做依赖注入的,从容器中自动获取bean,和@Autowired用法相似。