Table of Contents
SpringBoot 核心注解 Link to SpringBoot 核心注解
@SpringBootApplication Link to @SpringBootApplication
标识这是一个springboot应用,这个注解是SpringBootConfiguration EnableAutoConfigurationCompoentScan的结合体。
123456
@SpringBootApplication
public class MyApplication{
public static void main(String[] args){
SpringApplication.run(MyApplication.class, args);
}
}
@Configuration Link to @Configuration
用它来代替applicationContext.xml
文件,可以在这个注解下进行配置。通常用来自定义Bean
123456
@Configuration
public class MyConfig{
@Bean
public Mybean bean(){
}
}
@SpringBootConfiguration Link to @SpringBootConfiguration
是 Configuration 注解的变体,用来修饰 springboot的配置。
@EnableAutoConfiguration Link to @EnableAutoConfiguration
允许springboot自动配置注解,开启之后,springboot会在自动配置Bean
CompoentScan Link to CompoentScan
自动扫描@Compoent注解,包括@Service @Controller @Repository注册bean到context
1234567
@SpringBootApplication
@CompoentScan(basePackage="")
public class MyApplication{
public static void main(String[] args){
SpringApplication.run(MyApplication.class, args);
}
}
@Autowired Link to @Autowired
可以自动把一个Bean注入到当前类中。默认情况下是根据类型进行匹配,可以用@Qualifier 进行限制
12345
@Compoent
public class MyCompoent{
@Autowired
private UserImpl userImpl;
}
@Value Link to @Value
从配置文件或者环境变量获取值。
@Bean Link to @Bean
用于定义一个Bean,放到IOC容器中。一般在@Configuration中使用。
原型注解 Link to 原型注解
@Scope Link to @Scope
常用于设置Bean的作用域,包括 Singleton、Prototype、Request、Session 等。默认情况下,Bean 是 Singleton 的。
- Singleton: 默认,单例模式,全局仅有一个实例
- Prototype: 原型模式:每次获取Bean,都会有一个实例
- Request: 针对每一次Http都会创建一个实例,同时该实例仅在当前的Http Requset有效
- Session: 针对每次HTTP请求都会创建一个实例,同时该实例仅在当前的HTTP Session中有效
直接用字符串会有问题,用默认的参数:
ConfigurableBeanFactory.SCOPE_PROTOTYPE
ConfigurableBeanFactory.SCOPE_SINGLETON
WebApplicationContext.SCOPE_REQUEST
WebApplicationContext.SCOPE_SESSION
大部分业务直接用Singleton就可以,但是如果实例内有非静态变量,就会导致线程安全问题。 设置为Prototype的时候,每次连接都会生成一个实例,GC频繁,性能下降。
@Lazy Link to @Lazy
用于设置Bean的延迟初始化。当IOC从XML文件、java配置或其他方式加载的时候,不会初始化这个Bean。
@DependsOn Link to @DependsOn
表示Bean之间的依赖关系。IOC启动的时候,先创建@DependsOn标识的Bean。
SpringWeb常用注解 Link to SpringWeb常用注解
@Controller Link to @Controller
标志着类是一个SpringMVC控制器,用来处理HTTP请求
12
@Controller
public class MyController{}
@RestController Link to @RestController
他是 @Controller 和 @ResponseBody,用于创建Restful风格的控制器,表示控制器所有方法返回的都是Json
格式的。
@RequsetMapping Link to @RequsetMapping
用于映射Http请求,可以用value
属性指定URL请求,可以用Method
指定请求方法。
12345
@RestController
@RequsetMapping("/v1")
publi class ApiController{
}
@GetMapping Link to @GetMapping
相当于 @RequsetMapping(method=RequestMethod.GET)
123456
@RestController
@RequsetMapping("/v1")
publi class ApiController{
@GetMapping("/hello")
public void handleHello(){}
}
@PostMapping Link to @PostMapping
相当于 @RequsetMapping(method=RequsetMethod.Post)
@PutMapping Link to @PutMapping
同上
@DeleteMapping Link to @DeleteMapping
同上
@RequestParma Link to @RequestParma
用于将请求参数映射到方法的参数当中,可以使用value
属性指定参数名,required
指定是否必填,defaultValue
指定默认值
12345678
@RestController
@RequsetMapping("/v1")
publi class ApiController{
@GetMapping("/hello")
public String handleHello(@RequestParma("name") string name){
return "hello " + name;
}
}
@PathVariable Link to @PathVariable
用于把URL的占位符映射到方法的参数中。可以使用value
属性指定占位符名称。
12345678
@RestController
@RequsetMapping("/v1")
publi class ApiController{
@GetMapping("/{name}")
public String handleName(@PathVariable("name") String name){
}
}
@RequestBody Link to @RequestBody
用于从请求体中获取数据。通常处理Post,Put请求
1234567891011121314
@RestController
@RequestMapping("/api")
public class MyController {
@PostMapping("/greeting")
public String greeting(@RequestBody GreetingRequest request) {
return "Hello, " + request.getName() + "!";
}
}
@Data
public class GreetingRequest {
private String name;
}
@ResponseBody Link to @ResponseBody
注解表示该方法返回的结果直接输出到响应体中。
@ResponseStatus Link to @ResponseStatus
注解用于指定请求处理完成后的状态码。
@Cacheable Link to @Cacheable
表示该方法的结果被缓存,假如参数相同,就调用缓存的结果。
@CachePut Link to @CachePut
表示方法的结果应该被缓存起来,下次调用该方法时,不会返回缓存结果,而是重新计算结果并缓存起来。
@CacheEvict Link to @CacheEvict
表示方法执行后从缓存中删除指定项。
测试注解 Link to 测试注解
@SpringBootTest Link to @SpringBootTest
它会创建一个完整的 Spring 应用程序上下文,并在测试期间使用它
数据库相关 Link to 数据库相关
@Transactional Link to @Transactional
用于指定一个方法需要在事务中执行。默认情况下,只有 RuntimeException 会触发事务回滚。
@Reposity Link to @Reposity
用于标记数据访问层,表示这个类是一个数据仓库
@Entity Link to @Entity
用于标记实体类,表示这个类是一个JPA实体,与数据库中的表对应。
@Id Link to @Id
标记主键字段
@GeneratedValue Link to @GeneratedValue
指定主键的生成策略。
@Column Link to @Column
指定实体属性和数据库表之间的映射关系。