admin管理员组

文章数量:1794759

总结SpringBoot常用注解

总结SpringBoot常用注解

Spring常用注解 启动类

在启动类(XxxApplication)上使用的注解。

@SpringBootApplication

Spring Boot的项目一般都会有XxxApplication的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。 这个入口类都会有@SpringBootApplication注解,它让Spring Boot自动给程序进行必要的配置,该注解是SpringBoot项目特有的。 这个配置等同于以下几个注解之和: @SpringBootConfiguration:表示Application作为配置文件存在 @EnableAutoConfiguration:表示启用SpringBoot内置的自动配置功能 @ComponentScan : 扫描bean,路径为Application类所在package以及package下的子路径,在spring boot中bean都放置在该路径以及子路径下。 【示例】

@SpringBootApplication public class UserApplication { public static void main(String[] args) { SpringApplication.run(UserApplication.class, args); } } @MapperScan

通过使用@MapperScan可以指定要扫描的Mapper类的包的路径。相比要在每个Mapper类上使用@Mapper注解,这种方式更简便快捷。 @MapperScan可以指定要扫描的一个包或多个包,甚至以mapper为类名后缀的类。 【示例】

@SpringBootApplication @MapperScan({"com.kfit.*.mapper","org.kfit.*.mapper"}) public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } 表现层

在Controller层使用的注解,包括类上、方法上、方法参数上。

@Controller系列

使用在类上,表示是Controller层,包括@RestController 和@Controller。

@RestController public class TestController { @RequestMapping("/test") public String test(){ return "test!"; } }

注意:@RestController用于处理HTTP请求,@RestController= @Controller +@ResponseBody 其中@ResponseBody将java对象转为json格式的数据。 @ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。 在使用@ResponseBody注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。 @ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用,如AJAX。

@RequestMapping系列

使用在类或方法上,用于配置url映射,即请求路径。 @GetMapping组合注解相当于 @RequestMapping(method = RequestMethod.GET) @PostMapping 组合注解相当于 @RequestMapping(method = RequestMethod.POST)

@GetMapping("/add") public void addUser(@RequestParam("name")String name){ }

注意:@RestController 和 @ RequestMapping 是 SpringMVC 的注解,不是 SpringBoot 特有的注解。

@RequestBody

使用在方法参数上,用来接收json格式请求参数。

@PathVariable

用在方法参数上。

@RequestParam

使用在方法参数上,是springmvc中接收普通参数的注解。 请求中的参数名和处理器中的形参名不一致时用 @RequestParam。 语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””) value:参数名 required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。 defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值。

@RequestHeader

使用在方法参数上,用于获取请求头中的数据,通过指定参数 value 的值来获取请求头中指定的参数值。其他参数用法和 @RequestParam 完全一样。 语法:@RequestHeader(value=”参数名”,required=”true/false”,defaultValue=””)

业务层 @Service 持久层 @Repository @Mapper 配置类

在类上使用注解@Configuration,该类就是配置类。

@Configuration

从Spring3.0,@Configuration用于定义配置类,替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

@Bean

使用在方法上,给容器中注册一个Bean,即实例放到Spring容器中。 该实例类型为返回值的类型,实例id默认是用方法名作为id。

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration //表示配置文件 public class JavaConfig { //spring调用这个方法直接把FunctionService这个类实例加入到spring容器中   @Bean   public FunctionService functionService(){     return new FunctionService();   } }

由于@SpringBootApplication是由@Configuration组成,所以可以在启动类里面使用@Bean.

任意层 @Component

@Component, @Service, @Controller, @Repository是Spring注解,注解后可以被Spring框架所扫描并注入到Spring容器来进行管理。 @Component是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能。

@value

用于读取配置文件配置的参数,@Value用于properties文件或yaml文件配置的属性值。 【示例】 配置文件:

hello.world=你好

Java代码:

@Value("${hello.world}") private String hello;

@value也可以设置默认值,如果配置文件没有该参数,将会采用默认值,语法是参数名称和默认值使用冒号连接。 【示例】

@Value("${hello.world:我很好}") private String hello; 生成Bean

@Autowired:自动导入依赖的bean。 @Resource:@Autowired与@Resource都可以用来装配bean,都可以写在字段上或写在setter方法上。

测试

比如在IDEA开发工具的test模块对代码进行测试,此时在类上使用@RunWith(SpringRunner.class)和@SpringBootTest注解,方法上使用@Test注解。 注意: (1)测试类的所在目录名称和启动类所在目录名称要一致,否则报错:

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

(2)在类上单独使用@SpringBootTest注解也可以运行测试用例,但如果在测试类中使用@Autowired等注解生成bean,必须加@RunWith(SpringRunner.class)注解。

@RunWith(SpringRunner.class) @SpringBootTest public class EsTest { @Test void contextLoads() { } }

(3)对于@Test注解,它来自于org.junit.Test,可能会使用org.junit.jupiter.api.Test;此时报错:

报错:org.junit.runners.model.InvalidTestClassError: Invalid test class Spring Cloud常用注解 ribbon @LoadBalanced

在使用springcloud ribbon客户端负载均衡的时候,可以给RestTemplate bean 加一个@LoadBalanced注解,就能让这个RestTemplate在请求时拥有客户端负载均衡的能力。

@Bean @LoadBalanced //开启负载均衡的功能 RestTemplate restTemplate() { return new RestTemplate(); }

本文标签: 注解常用SpringBoot