Spring Boot Annotations

1.概述

Spring Boot 通过其自动配置功能使配置 Spring 变得更加容易。
介绍来自org.springframework.boot.autoconfigure和org.springframework.boot.autoconfigure.condition包的注解。

  1. @SpringBootApplication

我们使用此注释来标记 Spring Boot应用进程的主类:

@SpringBootApplication
class VehicleFactoryApplication {

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

@SpringBootApplication包含了@Configuration、@EnableAutoConfiguration和@ComponentScan注释及其默认属性

  1. @EnableAutoConfiguration

@EnableAutoConfiguration,顾名思义,启用自动配置。这意味着 Spring Boot 在其类路径中查找自动配置 bean 并自动应用它们。
请注意,我们必须将此注释与@Configuration一起使用,@Configuration是Spring的注解.
@Configuration注解的作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。

@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}
  1. Auto-Configuration Conditions

通常,当我们编写自定义自动配置时,我们希望 Spring 有条件地使用它们。我们可以通过本节中的注释来实现这一点。
我们可以将本节中的注释放在@Configuration类或@Bean方法上。
在接下来的部分中,我们将只介绍每个条件背后的基本概念。

4.1. @ConditionalOnClass and @ConditionalOnMissingClass

使用这些条件,Spring 将仅在注释参数中的类存在/不存在时才使用标记的自动配置 bean:

@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
    //...
}

4.2. @ConditionalOnBean and @ConditionalOnMissingBean

当我们想要根据特定 bean 的存在与否来定义条件时,我们可以使用这些注释:

@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    // ...
}

4.3. @ConditionalOnProperty

有了这个注解,我们可以对属性的值设置条件:

@Bean
@ConditionalOnProperty(
    name = "usemysql", 
    havingValue = "local"
)
DataSource dataSource() {
    // ...
}

4.4. @ConditionalOnResource

我们可以让 Spring 仅在存在特定资源时才使用定义:

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

4.5. @ConditionalOnWebApplication and @ConditionalOnNotWebApplication

使用这些注解,我们可以根据当前应用进程是否是 Web 应用进程来创建条件:

@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
    // ...
}

4.6. @ConditionalExpression

我们可以在更复杂的情况下使用此注释。当 SpEL 表达式计算为 true 时,Spring 将使用标记的定义:

@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
    // ...
}

4.7. @Conditional

对于更复杂的条件,我们可以创建一个评估自定义条件的类。我们告诉 Spring 将此自定义条件用于@Conditional:

@Conditional(HibernateCondition.class)
Properties additionalProperties() {
    //...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot可以集成多个接口文档框架,其中两个比较常用的是Swagger和Knife4j。下面分别介绍它们的集成方法: 1. Swagger集成: Swagger是一个开源的接口文档框架,可以帮助我们生成、展示和测试API文档。在Spring Boot中,我们可以通过添加相应的依赖和配置来集成Swagger。 首先,在pom.xml文件中添加Swagger的依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` 然后,在Spring Boot的启动类上添加`@EnableSwagger2`注解: ```java import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableSwagger2 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 接下来,我们可以在Controller类的方法上使用Swagger的注解来描述接口信息,例如: ```java import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Api(tags = "示例接口") public class SampleController { @GetMapping("/hello") @ApiOperation("示例接口") public String hello() { return "Hello, Swagger!"; } } ``` 最后,启动Spring Boot应用程序,访问`http://localhost:8080/swagger-ui.html`即可查看生成的接口文档。 2. Knife4j集成: Knife4j是Swagger的增强版,提供了更多的功能和样式定制。在Spring Boot中,我们可以通过添加相应的依赖和配置来集成Knife4j。 首先,在pom.xml文件中添加Knife4j的依赖: ```xml <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.2</version> </dependency> ``` 然后,在Spring Boot的启动类上添加`@EnableKnife4j`注解: ```java import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j; @EnableKnife4j @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 接下来,我们可以在Controller类的方法上使用Knife4j的注解来描述接口信息,例如: ```java import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Api(tags = "示例接口") public class SampleController { @GetMapping("/hello") @ApiOperation("示例接口") public String hello() { return "Hello, Knife4j!"; } } ``` 最后,启动Spring Boot应用程序,访问`http://localhost:8080/doc.html`即可查看生成的接口文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值