【Spring Boot】常用注解---随用随补
SpringBoot的常用注解
一、使用在类名上的注解
1、@RestController
用于返回JSON、XML等数据,但不能返回HTML页面。相当于注解@ResponseBody和注解@Controller合在一起的作用。
2、@Controller
用于标注控制器层,在MVC开发模式中代表C(控制器)。
3、@Service
它用于声明一个业务处理类(实现非接口类),用于标注服务层,处理业务逻辑。
以下代码就是继承ArticleService来实现其方法。
@Service
public class ArticleServiceImpl implements ArticleService{
@Autowired
private ArticleRepository articleRepository;
//重写service接口的实现,实现根据id查询对象的功能。
@Override
public Article findArticleById(long id){
return articleRepository.findById(id);
}
}
4、@Repositroy
它用于标注数据访问层
5、@Component
它用于把普通的POJO实例化到spring容器中。当类不属于注解@Controller和@Service等时,就可以使用注解@Component来标注这个类。它可以配合CommandLineRunner使用,以便在程序启动后执行一些基础任务。
6、@Configuration
它用于标注配置类,并且可以由Spring容器自动处理。它作为Bean的载体,用来指示一个类声明、一个或多个@Bean方法,在运行时为这些Bean生成BeanDefinition和服务请求。
7、@Resource
@Autowired与@Resource都可以用来装配Bean,也都可以写在字段或Setter方法上。
public class ArticleController{
@Resource
private ArticleRepository articleRepository;
@PostMapping("")
public String saveArticle(Article model){
articleRepository.save(model);
return "redirect:/article/";
}
}
8、@Autowired
它表示被修饰的类需要注入对象。Spring会扫描所有被@Autowired标注的类,然后根据类型在IoC容器中找到匹配的类进行注入。被@Autowired注解后的类不需要再导入文件。
9、@RequestMapping
它用来处理请求地址映射,用在类或者方法上 。如果用在类上,则表示类中的所有响应请求的方法都是以该地址作为父路径的。该注解有6个属性。
- Params:指定Request中必须包含某些参数值,才让该方法处理。
- Headers:指定Request中必须包含某些指定的header值,才能让该方法处理请求。
- Value:指定请求的实际地址,指定的地址可以是URI Template模式。
- Method:指定请求的类型
- Consumes:制定处理请求的提交内容类型Content-Type,如"application/json,text/html"。
- Produces:指定返回的内容类型。只有当Request请求头中的Accept类型中包含该指定类型时才返回。
10、@Transactional
它可以用在接口、接口方法、类及类方法上。
但Spring不建议在接口或者接口方法上使用该注解,因为该注解只有在使用基于接口的代理时,才会生效。如果异常被捕获了,则事务就不回滚了。如果想让事务回滚,则必须再往外抛出异常。
11、@Qualifier
它的意思是“合格者”,用于标注哪一个实现类才是需要注入的。需要注意的是,@Qualifier的参数名称为被注入的类中的注解@Service标注的名称。
@Qualifier常常和@Autowired一起使用,如以下代码:
@Autowired
@Qualifier("articleService")
而@Resource和它不同,@Resource自带name属性。
二、使用在方法上的注解
1、@RequestBody
通过@RequestBody可以将请求体中的JSON/XML字符串绑定到相应的Bean上,也可以将其分别绑定到对应的字符串上。
举例:
- AJAX提交的数据代码:
$.ajax({
url:"/post",
type:"POST",
data:'{"name":"darkerg"}',
//这里不能写成content-type
contentType:"application/json charset=utf-8"
success:function(data){
alert("request success!")
}
})
- 控制器接收
@RquestMapping("/post")
public void post(@RequestBody String name){
//
}
2、@PathVariable
3、@Bean
它表示产生一个Bean,并交给Spring管理。用于封装数据,一般有Setter、Getter方法。在MVC模型中,对应Model。
https://www.cnblogs.com/curedfisher/p/13265140.html
4、@ResponseBody
它的作用是通过转换器将控制器中方法的返回的对象转换为指定的格式,然后写入Response对象的body区。它常用来返回JSON/XML格式的数据。
三、其他注解
1、@EnableAutoConfiguration
使用在入口类/类名上,用来提供自动配置。
https://blog.csdn.net/qq_36872046/article/details/83662761
2、@SpringBootApplication
入口类/类名上,用来启动入口类Application。
3、@EnableScheduling
入口类/类名上,用来开启计划任务。
4、@EnableAsync
入口类/类名上、开启异步注解的功能。
5、@ComponentScan
入口类/类名上、用来扫描组件,可自动发现和装配一些Bean。它根据定义的扫描路径,把符合扫描规则的类装配到Spring容器中,告诉Spring哪个包(package)的类会被Spring自动扫描并且装入IoC容器。它对应XML配置中的元素。可以通过basePackages等属性来细粒度地定制自动扫描的范围,默认会从声明@ComponentScan所在类的包进行扫描。
https://www.jianshu.com/p/64aac6461d5b
6、Aspec
入口类/类名上,标注切面,可以用来配置事务、日志、权限验证,在用户请求时做一些处理等。
7、ControllerAdvice
类名上、包含@Component,可以被扫描到。统一处理异常。
8、Value
属性上、用于获取配置文件中的值。