springboot常见注解详解
springboot中的注解很多很多,我们不一一说明,就把常见的讲解下就行,遇到不常见的到时候再查资料就可以了。
启动类中的注解
- @SpringBootApplication:该注解用在启动类上面,是springboot最核心注解,也是组合注解,他包含下面几个注解
- @SpringBootConfiguration:继承自@Configuration,@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个
- @EnableAutoConfiguration:该注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web ,来判断你的项
目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置。 - @ComponentScan:扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。是以前springmvc的xml配置文件里面的
<context:component-scan>
。
因为扫码的是当前包及其子包,所以启动类要放到最外层。
- @EnableScheduling:任务开启需要该注解
- @EnableAsync:开启异步任务的注解,同步任务不需要开启该注解
配置类中的注解
- @Configuration:标注当前类是配置类(相当于springmvc里面的xml格式的配置文件),并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。当然也可以通过name属性指明bean的实例名。
- @Bean:相当于XML中的bean一样,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
控制器中的注解
- @Controller:该注解用于定义控制器,在spring项目中是由控制器负责用户发来的请求,也负责响应结果。在使用该注解时,还用结合@RequestMapping一起使用,处理http请求
- @ResponseBody:使用该注解表示方法的返回结果直接写入HTTP response body中的,通常返回的都是json格式的数据,用于构建restful的API。
- @RestController:此注解就是@Controller和@ResponseBoby的组合,使用在controller层的,控制层里面的方法都是以json的格式输出的。
- @PathVariable:该注解使用来绑定函数中的参数用于获取参数的,意思就是通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxxx} 占位符
可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。当默认的情况下,spring会对@该注解的变量进行自动赋值的,我们也可以自己指定。
@RequestMapping("findAll/{type}")
public Object findAll(@PathVariable(name = "type") String type){
if (DataSourceType.SLAVE01.name().equals(type)){
return sysUserService.findAllFromSlave01();
} else if(DataSourceType.SLAVE02.name().equals(type)){
return sysUserService.findAllFromSlave02();
} else{
return sysUserService.findAllFromMaster();
}
}
浏览器访问http://127.0.0.1:8088/moyundong/sysUser/findAll/MASTER
,type
的值就是url里面的MASTER
- @PequestParam:是指获取请求参数的值,即
url?name=
这种形式 - @GetMapping:是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
- @PostMapping:是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
- @RequestMapping:是一个用来处理请求地址映射的注解,可用于类或方法上。没有默认值,如果不配置method,则以下面任何请求形式都可以访问得到
- RequestMethod.GET
- RequestMethod.POST
- RequestMethod.PUT
- RequestMethod.DELETE
业务层中的注解
- @Service:该注解使用于标注业务层,当在业务层的类上使用时,bean就是自动找到该类就是service的。
数据访问中的注解
- @Repository:该注解用于标注数据访问组件,使用mybatis的时候,dao组件都是通过@MapperScan扫描统一注册的
@MapperScan("com.moyundong.dao")
组件综合
- @Import:将class导入容器中
- @Component:该注解指当我们组件不好归类时,就可以使用该注解进行标注。
- @Autowired:使用该注解作用就是在类里面自动注入bean,比如在controller里面注入service,在service里面注入dao
- @Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。举例如下:
@Service("a")
public class UserServiceImplA implements UserService {
public UserDto getUserById(Long id) {
return new UserDto();
}
}
@Service("b")
public class UserServiceImplB implements UserService {
public UserDto getUserById(Long id) {
return new UserDto();
}
}
@Controller
@RequestMapping("/user")
public class UserInfoControl {
@Autowired
@Qualifier("b")//因为有两个UserService的实例,我们通过@Qualifier进行选择我们想要使用的实例。
UserService userService;
@RequestMapping(params = "method=showUserInfo")
public void showUserInfo(HttpServletRequest request) {
// ......
}
}
aop相关注解
- @Aspect:作用在类上,代表这个类是一个切面配置类
- @Before:前置通知,作用在方法上,执行目标方法之前会进入前置通知
- @After:后置通知,作用在方法上,执行目标方法之后会进入后置通知
- @Around:环绕通知,作用在方法上,执行目标方法之前会进入环绕通知,环绕通知放行之后会执行目标方法,目标方法执行完之后会再进入环绕通知
自定义注解中的注解
- @Target注解:指明了修饰的这个注解的使用范围,也就是注解可以用在哪里。ElementType的取值包含以下几种
- TYPE:类,接口或者枚举
- FIELD:域,包含枚举常量
- METHOD:方法(我们用这个)
- PARAMETER:参数
- CONSTRUCTOR:构造方法
- LOCAL_VARIABLE:局部变量
- ANNOTATION_TYPE:注解类型
- PACKAGE:包
- @Retention注解:指明修饰的注解的生存周期,注解在哪个阶段执行。RetentionPolicy的取值包含以下三种
- SOURCE:源码级别保留,编译后即丢弃。
- CLASS: 编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
- RUNTIME: 运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。(我们用这个)
- @Documented:它代表着此注解会被javadoc工具提取成文档
异常处理中的注解
@ControllerAdvice:该注解包含@Component,作用在类上,进行统一异常处理。
@RestControllerAdvice:包含@ResponseBody和@ControllerAdvice,异常返回的是一个json格式的数据。
@ExceptionHandler:用在方法上面表示遇到这个异常就执行以下方法
定时器中的注解
- @EnableScheduling:作用在类上,开启定时任务功能
- @Scheduled:作用在方法上,按指定执行周期执行方法
- @Schedules:作用在方法上,包含多个@Scheduled,可同时运行多个周期配置
- @EnableAsync:作用在类上,开启方法异步执行的能力
- @Async:作用在方法上,标记方法为异步线程中执行
缓存中的注解
- @EnableCaching:开启缓存支持
- @CacheConfig:在一个类下,提供公共缓存配置
- @Cacheable:放在方法和类上,缓存方法或类下所有方法的返回值
@Cacheable(value = "loginUserPermissionCacheRules",key = "#username")
- @CachePut:每次先执行方法,再将结果放入缓存
- @CacheEvict:删除缓存
@CacheEvict(value="loginUserPermissionCacheRules", allEntries=true)
- @Caching,可以配置@Cacheable、@CachePut、@CacheEvict
本节示例下载地址:java相关demo下载列表
1介绍2springboot定时任务3springboot定时任务配置详解4springboot动态定时任务5springboot集成websocket6springboot多数据源7springboot配置druid监听8springboot自定义注解9springboot常见注解详解10springboot接收参数详解11springboot验证机制@Valid和@Validated12springboot集成Swagger213springboot集成swagger-bootstrap-ui14springboot集成sh