由于springboot涉及的一些加载顺序的问题,在@Configuration修改的配置类中有时无法获取到配置文件的数据,使用@Value总是获取到的是null,在我使用它配置mybatis-plus时,无论是用网上说的方式,使用static修饰或者注入placeHolder等统统无效,总是null.
其实处理方法很简单,只需要使用Enviroment获取配置就可以了,不过类要实现EnvironmentAware,我配置mybatis-plus的方法如下,其中mp.scanner.package
就是配置文件内的key。
@Configuration
//@MapperScan("com.mybatis.plus.mybatisplususe.mapper*")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
public class MybatisPlusConfig implements EnvironmentAware {
private Environment environment;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
/**
* mybatis-plus分页插件<br> * 文档:http://mp.baomidou.com<br>
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
return paginationInterceptor;
}
/*逻辑删除配置*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
/**
* SQL执行效率插件
*/
@Bean
@Profile({"dev","test"})// 设置 dev test 环境开启
public PerformanceInterceptor performanceInterceptor() {
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
performanceInterceptor.setFormat(true);
// performanceInterceptor.setMaxTime(500);
// performanceInterceptor.setWriteInLog(true);
return performanceInterceptor;
}
/*乐观锁插件*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
/**
* 相当于顶部的:
* {@code @MapperScan("com.baomidou.springboot.mapper*")}
* 这里可以扩展,比如使用配置文件来配置扫描Mapper的路径
*/
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
String mpScannerPackage = environment.getProperty("mp.scanner.package");
scannerConfigurer.setBasePackage(mpScannerPackage);
return scannerConfigurer;
}
}
上一篇 springboot下将静态资源路径设置到磁盘的基本目录
下一篇 springboot2.0+druid+jpa启动报错org.hibernate.persister.entity.SingleTableEntityPersiste