Spring Boot常见注解

Spring Boot 注解是一种元数据形式,提供有关 Spring 应用程序的数据。Spring Boot构建在spring之上,包含了spring的所有特性。如今,它正成为开发人员的最爱,因为它的快速生产就绪环境使开发人员能够直接专注于逻辑,而不是费力地进行配置和设置。Spring Boot 是一个基于微服务的框架,在其中创建一个可用于生产的应用程序只需很少的时间。以下是 Spring Boot 的一些特性:

  • 它允许避免 Spring 中存在的大量 XML 配置
  • 它提供了轻松维护和创建 REST 端点的功能
  • 它包括嵌入式 Tomcat 服务器
  • 部署非常简单,war和jar文件可以轻松部署在Tomcat服务器中

Spring 注解存在于org.springframework.boot.autoconfigureorg.springframework.boot.autoconfigure.condition包中,通常称为 Spring Boot 注解。此类别中可用的一些注释包括:

  • @SpringBootApplication
  • @SpringBootConfiguration
  • @EnableAutoConfiguration
  • @ComponentScan
  • Auto-Configuration Conditions
    • @ConditionalOnClass, @ConditionalOnMissingClass
    • @ConditionalOnBean, @ConditionalOnMissingBean
    • @ConditionalOnProperty
    • @ConditionalOnResource
    • @ConditionalOnWebApplication and @ConditionalOnNotWebApplication
    • @ConditionalExpression
    • @Conditional

@SpringBootApplication

该注解用于标记 Spring Boot 应用程序的主类。它封装了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan注解及其默认属性。

@SpringBootApplication

public class DemoApplication {
	public static void main(String[] args)
	{
		SpringApplication.run(DemoApplication.class, args);
	}
}

@SpringBootConfiguration

它是一个类级注释,是 Spring Boot 框架的一部分。这意味着一个类提供 Spring Boot 应用程序配置。它可以用作Spring标准@Configuration注解的替代品,以便自动找到配置。大多数 Spring Boot 应用程序通过 @SpringBootApplication 使用 @SpringBootConfiguration。如果应用程序使用@SpringBootApplication,则它已经在使用@SpringBootConfiguration。

@SpringBootConfiguration
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

	@Bean
	public StudentService studentService() {
		return new StudentServiceImpl();
	}
}

@EnableAutoConfiguration

此注释自动配置类路径中存在的 bean。它通过从类路径中获取所需的 bean 并将其配置为运行应用程序来简化开发人员的工作。该注解是spring boot框架的一部分。例如,当我们在类路径中说明spring-boot-starter-web依赖项时,Spring boot 自动配置Tomcat和Spring MVC。声明 @EnableAutoConfiguration 注解的类的包被视为默认包。因此,我们需要在根包中应用@EnableAutoConfiguration注解,以便可以检查每个子包和类。

@Configuration
@EnableAutoConfiguration
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}

}

@ComponentScan

@ComponentScan 告诉 Spring 在哪些包中您有注释的类应该由 Spring 管理。因此,例如,如果您有一个用@Controller注解的类,该类位于 Spring 未扫描的包中,您将无法将其用作 Spring 控制器。所以我们可以说 @ComponentScan 使 Spring 能够扫描配置、控制器、服务和其他已定义的组件等内容。一般情况下,@ComponentScan注解与@Configuration注解一起使用,指定Spring扫描组件的包。

@Configuration
@ComponentScan
public class Application {
	public static void main(String[] args)
	{
		SpringApplication.run(Application.class, args);
	}
}

@ConditionalOnClass和@ConditionalOnMissingClass

@ConditionalOnClass 注解用于标记自动配置 bean(如果注解参数中的类存在/不存在)。

@Configuration
@ConditionalOnClass(MongoDBService.class)

class MongoDBConfiguration {
	
}

@ConditionalOnBean和@ConditionalOnMissingBean

这些注释用于根据特定 bean 的存在或不存在来包含 bean。

@Bean
@ConditionalOnMissingBean(type = "JpaTransactionManager")

JpaTransactionManager jpaTransactionManager(EntityManagerFactory entityManagerFactory)
{
	
}

@ConditionalOnProperty

这些注释用于根据 Spring 环境属性的存在和值来包含配置。

@Bean
@ConditionalOnProperty(name = "usemongodb",havingValue = "local")

DataSource
dataSource()
{
	
}

@Bean
@ConditionalOnProperty(name = "usemongodb",havingValue = "prod")

DataSource
dataSource()
{
	
}

@ConditionalOnResource

这些注释用于仅当类路径中存在特定资源时才包含配置。

@ConditionalOnResource(resources = "classpath:mongodb.properties")
Properties
additionalProperties()
{
	
}

@ConditionalOnExpression

这些注释用于根据 SpEL(Spring 表达式语言)表达式的结果包含配置
SpEL(Spring 表达式语言):它是一种功能强大的表达式语言,支持在运行时查询和操作对象图。

@Bean
@ConditionalOnExpression("${env} && ${havingValue == 'local'}")
DataSource dataSource() 
{
	
}

@ConditionalOnCloudPlatform

这些注释用于在指定的云平台处于活动状态时包含配置。

@Configuration
@ConditionalOnCloudPlatform(CloudPlatform.CLOUD_FOUNDRY)
public class CloudConfigurationExample 
{

}

请求处理和控制器注释

此类别下的一些重要注释是:

  • @Controller
  • @RestController
  • @RequestMapping
  • @RequestParam
  • @PathVariable
  • @RequestBody
  • @ResponseBody
  • @ModelAttribute

@Controller

该注解提供了Spring MVC功能。它用于创建控制器类,同时处理 HTTP 请求。通常,我们使用@Controller注释和@RequestMapping注释来将 HTTP 请求与控制器类内的方法映射。

@RestController

该注释用于处理 REST API,例如 GET、PUT、POST、DELETE 等,也用于使用 Spring MVC 创建 RESTful Web 服务。

它封装了@Controller注解和@ResponseBody注解及其默认属性。
@RestController = @Controller + @ResponseBody

@Controller
public class MyController{
public String JS(){
	
}
}

@RequestMapping

此注释用于将 HTTP 请求与控制器类内的处理程序方法进行映射。

为了处理特定的 HTTP 请求,我们可以使用

  • @GetMapping
  • @PutMapping
  • @PostMapping
  • @PatchMapping
  • @DeleteMapping

我们可以手动使用 GET、POST、PUT 和 DELETE 注释以及路径,也可以使用 @RequestMapping 注释以及上述所有处理程序请求的方法

@RestController
public class HelloController{
public String JS(){

}
}

@RequestParam

该注释主要用于从 URI 获取参数。换句话说,我们可以说@RequestParam注解用于读取表单数据并将Web请求参数绑定到特定的控制器方法。

@RestController
public class MyController{

@GetMapping("/authors")
public String getAuthors(@RequestParam(name="authorName") String name){
	
}
}
			

@PathVariable

该注释用于从 URI 路径中提取数据。它将 URL 模板路径变量与方法变量绑定。

@RestController
public class MyController{

@GetMapping("/author/{authorName}")
public String getAuthorName(@PathVariable(name = "authorName") String name){

}
}

@RequestBody

此注释用于将 HTTP 请求从传入的 JSON 格式直接从请求正文转换为域对象。这里方法参数与 HTTP 请求的正文绑定。

@RestController
public class MyController{

@GetMapping("/author")
public void printAuthor(@RequestBody Author author){

}
}

@ResponseBody

该注解用于将域对象转换为JSON或任何其他文本形式的HTTP请求。此处,该方法的返回类型与 HTTP 响应正文绑定。

@Controller
public class MyController{

public @ResponseBody Author getAuthor(){
	Author author = new Author();
	author.setName("JSSOLO");
	author.setAge(29);
	return author;
}
}

@ModelAttribute

该注解指的是Spring MVC中的模型对象。它也可以用于方法或方法参数。

@ModelAttribute("author") 
public Authorauthor(){ 
  
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容