springboot进阶学习(九)springboot常见注解详解

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/MASTERtype的值就是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集成websocket
6springboot多数据源
7springboot配置druid监听
8springboot自定义注解
9springboot常见注解详解
10springboot接收参数详解
11springboot验证机制@Valid和@Validated
12springboot集成Swagger2
13springboot集成swagger-bootstrap-ui
14springboot集成shiro
15springboot集成shiro(二)
16springboot集成jwt
17springboot集成ActiveMQ
18springboot缓存机制

🍉🍉🍉 欢迎大家来博客了解更多内容:java乐园 🍉🍉🍉

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值