自定义Spring Boot装配

自动配置

Spring Boot自动配置会尝试根据添加的jar依赖项自动配置Spring应用程序。

您需要通过将@EnableAutoConfiguration@SpringBootApplication注释添加到一个@Configuration类中来选择自动配置。

禁用特定的自动配置类

如果发现正在应用不需要的特定自动配置类,则可以使用exclude属性@SpringBootApplication来禁用它们,

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class MyApplication {
}

实体和依赖注入

使用@ComponentScan(查找您的bean)和使用@Autowired(进行构造函数注入)

@SpringBootApplication注释

  • @EnableAutoConfiguration:启用Spring Boot的自动配置机制

  • @ComponentScan:启用@Component对应用程序所在的软件包的扫描

  • @Configuration:允许在上下文中注册额外的bean或导入其他配置类

创建自己的自动配置

自动配置类使用@ConditionalOnClass@ConditionalOnMissingBean注释,@ConditionalOnMissingBean注释是用来让开发者重写自动配置,如果他们不满意自己的缺省值一个常见的例子

@Configuration
@ConditionalOnClass
@EnableConfigurationProperties(MosesProperties.class)
public class MosesAutoConfiguration {
    @Bean
    @ConditionalOnMissingBean
    public MosesService getService() {
        return new MosesServiceImpl();
    }
}

查找自动配置候选人

Spring Boot检查发布的jar中是否存在META-INF/spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.moses.framework.starter.MosesAutoConfiguration

添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
</dependency>

MosesProperties接收配置文件配置的参数

@Data
@ConfigurationProperties("spring.moses")
public class MosesProperties {
    private String name = "moses";
    private String region = "beijing";
}

接口MosesService

public interface MosesService {
    String welcome();
}

实现类MosesServiceImpl

public class MosesServiceImpl implements MosesService {
    @Autowired
    MosesProperties mosesProperties;

    @Override
    public String welcome() {
        return "welocme " + mosesProperties.getName() + " to " + mosesProperties.getRegion();
    }
}

调用测试

添加依赖

<dependency>
    <groupId>com.moses.framework</groupId>
    <artifactId>moses-spring-boot-starter</artifactId>
    <version>${framework.version}</version>
</dependency>

配置

spring:
  moses:
    name: 王者归来
    region: 北京

调用

 @Autowired
    private MosesService mosesService;

    @ResponseBody
    @RequestMapping("/test")
    public String addString() {
        return mosesService.welcome();
    }

测试

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值