目录
springboot开发中常用注解总结
前言
springboot作为现在最常用的一种框架之一,其相关注解有很多,这里只是简单介绍一些常用的注解。
1 springboot启动
1.1 @SpringBootApplication
- 通常标注在springboot主启动类上。
- 创建springboot项目之后会自动在主启动类上添加。
这是 Spring Boot 最核心的注解,用在 Spring Boot 主类上,标识这是一个Spring Boot 应用,用来开启 Spring Boot 的各项能力。
@SpringBootApplication 这个注解是一个复合注解,
可以由以下三个注解代替:
1. @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制:
是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中
2. @ComponentScan: @ComponentScan用于类或接口上主要是指定扫描路径,
spring会把指定路径下带有指定注解的类自动装配到bean容器里。
会被自动装配的注解包括@Controller、 @Service、@Component、@Repository等等。
其作用等同于<context:component-scan base-package="com.xxx.xxx" />配置
原文链接:https://blog.csdn.net/QingXu1234/article/details/112508065
4. @SpringBootConfiguration:允许在 Spring 上下文中注册额外的 bean 或导入其他配置类
2 springBean相关
2.1 @Autowired
-
标注在属性上。
-
默认是将属性名作为组件的id注入到容器中。
-
自动导入对象到类中,注意导入的对象也要被spring容器管理 比如说:service类注入到controller类中。
@Service
public class UserService {
......
}
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
......
}
- 该注解默认是优先按照类型去容器中找对应的组件,如果有多个相同类型的组件,再通过按照属性的名称作为组件的id去容器中找。
- @Autowired(required = false) 默认是true,找不到会报错,设置为false后,找不到也不会报错。
2.2 @Qualifier
搭配@Autowired注解使用,可以指定组件的名称,而不是使用属性名。
自己指定组件的名称
@Autowired
@Qualifier(value="bookDao2")
private BookDao bookDao;
2.3 @Resource
- 标注在属性上
- 默认按照名称进行自动装配,几乎和@Autowired注解功能一样,只不过不支持自定义(@Resource是java里面的注解,而@Autowired是spring中的注解)。@Autowired(required = false) 和@Primary
2.4 @Component(通用)、@Service(service层、@Controller(controller层)、@Repository(DAO层)
- 标注在类上
- 要想把类标识成可以被@Autowired注解自动装配的bean的类,就需要加入这些注解。
2.5 @RestController
- 标注在类上,标识该类是一个控制器bean
- @Controller和@ResponseBody的合集。REST风格 ;前后端不分离。
- 将函数的返回值直接填入到HTTP响应体中,返回JSON或XML数据,显示在浏览器。因为如果只是使用@Controller(传统springmvc应用)的话,我们一般都是返回一个视图。
2.6 @Scope
-
设置作用域
-
标注在bean方法对象上,不用设置,因为默认是单实例。我们常用的也是单实例。
@Scope("prototype") --- 设置组件为多实例,ioc容器启动不会重新调用方法创建对象放到ioc容器中,每次获取的时候才会调用,获取一次创建一次
@Scope("singleton") --- 设置组件为单实例,ioc容器启动会调用方法创建对象放到ioc容器中,以后每次获取都是直接从容器中拿。
2.7 @Configuration
- 标注在类上
- 将类设置为配置类
- 用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。
- 3、proxyBeanMethods:代理bean的方法
Full(proxyBeanMethods = true)(保证每个@Bean方法被调用多少次返回的组件都是单实例的)(默认)
Lite(proxyBeanMethods = false)(每个@Bean方法被调用多少次返回的组件都是新创建的)
2.8 @Bean
-
标注在方法上
-
给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例
-
设置该方法的返回值作为spring管理的bean
@Configuration
public class SpringConfiguration {
@Bean
public Student student(){
return new Student(11,"jack",22);
}
}
2.9 @ResponseBody
@ResponseBody注解既可以在方法上使用,也可以在类上使用,在类上使用表明该类中所有方法均返回JSON数据,也可以与@Controller
注解合并为@RestController。它的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
3 REST风格 — 处理常见的HTTP请求类型
常见的4种请求类型
- GET请求 :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)
- POST请求 :在服务器上创建一个新的资源。举个例子:POST /users(创建学生)
- PUT请求 :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)
- DELETE请求 :从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)
3.1 @GetMapping
- 标注在方法上
@GetMapping("users") 等价于
@RequestMapping(value="/users",method=RequestMethod.GET)
3.2 @POSTMapping
- 标注在方法上
@Post