Spring Boot 注解是一种元数据形式,提供有关 Spring 应用程序的数据。Spring Boot构建在spring之上,包含了spring的所有特性。如今,它正成为开发人员的最爱,因为它的快速生产就绪环境使开发人员能够直接专注于逻辑,而不是费力地进行配置和设置。Spring Boot 是一个基于微服务的框架,在其中创建一个可用于生产的应用程序只需很少的时间。以下是 Spring Boot 的一些特性:
- 它允许避免 Spring 中存在的大量 XML 配置
- 它提供了轻松维护和创建 REST 端点的功能
- 它包括嵌入式 Tomcat 服务器
- 部署非常简单,war和jar文件可以轻松部署在Tomcat服务器中
Spring 注解存在于org.springframework.boot.autoconfigure和org.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(){
}
部分文章内容可能来自互联网,如有侵权,请通过邮件联系
暂无评论内容