chore(config): Improve MyBatis Plus and Redis conditional configuration

This commit is contained in:
2025-03-29 20:50:57 +08:00
parent 9eec8efa14
commit c994e72960
4 changed files with 37 additions and 16 deletions
@@ -991,6 +991,7 @@ public class MinioUtils {
// com.nuaa.video.common.config.RedisConfig.java // com.nuaa.video.common.config.RedisConfig.java
package com.nuaa.video.common.config; package com.nuaa.video.common.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
@@ -1011,6 +1012,7 @@ import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator
/** /**
* Redis配置类 * Redis配置类
* 只有在存在RedisOperations类且没有redisTemplate bean时才会创建
*/ */
@Configuration @Configuration
@EnableCaching @EnableCaching
@@ -1020,9 +1022,10 @@ public class RedisConfig {
@Bean @Bean
@ConditionalOnMissingBean(name = "redisTemplate") @ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { @ConditionalOnBean(RedisConnectionFactory.class) // 只有当存在RedisConnectionFactory时才创建
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory); template.setConnectionFactory(factory);
// 创建配置好的ObjectMapper // 创建配置好的ObjectMapper
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
@@ -1108,16 +1111,23 @@ import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerIntercep
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/** /**
* MyBatis Plus配置类 * MyBatis Plus配置类
* 只有在存在DataSource且启用mybatis-plus时才生效
*/ */
@Configuration @Configuration
@EnableTransactionManagement @EnableTransactionManagement
@MapperScan("com.nuaa.video.**.mapper") @ConditionalOnClass({DataSource.class})
@ConditionalOnProperty(prefix = "spring.datasource", name = "url")
@MapperScan({"com.nuaa.video.**.mapper"})
public class MybatisPlusConfig { public class MybatisPlusConfig {
@Bean @Bean
@@ -1,3 +1,4 @@
// com.nuaa.video.common.config.MybatisPlusConfig.java
package com.nuaa.video.common.config; package com.nuaa.video.common.config;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
@@ -6,16 +7,23 @@ import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerIntercep
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
/** /**
* MyBatis Plus配置类 * MyBatis Plus配置类
* 只有在存在DataSource且启用mybatis-plus时才生效
*/ */
@Configuration @Configuration
@EnableTransactionManagement @EnableTransactionManagement
@MapperScan("com.nuaa.video.**.mapper") @ConditionalOnClass({DataSource.class})
@ConditionalOnProperty(prefix = "spring.datasource", name = "url")
@MapperScan({"com.nuaa.video.**.mapper"})
public class MybatisPlusConfig { public class MybatisPlusConfig {
@Bean @Bean
@@ -1,5 +1,7 @@
// com.nuaa.video.common.config.RedisConfig.java
package com.nuaa.video.common.config; package com.nuaa.video.common.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
@@ -20,6 +22,7 @@ import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator
/** /**
* Redis配置类 * Redis配置类
* 只有在存在RedisOperations类且没有redisTemplate bean时才会创建
*/ */
@Configuration @Configuration
@EnableCaching @EnableCaching
@@ -29,9 +32,10 @@ public class RedisConfig {
@Bean @Bean
@ConditionalOnMissingBean(name = "redisTemplate") @ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { @ConditionalOnBean(RedisConnectionFactory.class) // 只有当存在RedisConnectionFactory时才创建
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory); template.setConnectionFactory(factory);
// 创建配置好的ObjectMapper // 创建配置好的ObjectMapper
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
@@ -1,6 +1,5 @@
# src/main/resources/META-INF/spring.factories # src/main/resources/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.nuaa.video.common.config.RedisConfig,\
com.nuaa.video.common.config.MybatisPlusConfig,\ com.nuaa.video.common.config.MybatisPlusConfig,\
com.nuaa.video.common.config.MinioConfig,\ com.nuaa.video.common.config.MinioConfig,\
com.nuaa.video.common.config.WebConfig,\ com.nuaa.video.common.config.WebConfig,\