MybatisPlusConfig使用@Value为null的问题

GoogleVip8 5月前 ⋅ 419 阅读

解决方案地址:https://blog.csdn.net/u011943534/article/details/89446130

问题代码如下图

QQ20200527-0.png

由于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;
    }
}

问题最后,使用@MapperScan("com.agricultureandforestry.module..mapper")它不香吗?


全部评论: 0

    我有话说: