Commit 475ed253 by yuwei

2.0.0项目初始化

parent a2601092
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId> <artifactId>commons-pool2</artifactId>
</dependency> </dependency>
......
...@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.PropertyAccessor; ...@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -27,8 +27,9 @@ import java.util.HashSet; ...@@ -27,8 +27,9 @@ import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ConditionalOnClass(RedisOperations.class)
@EnableCaching @EnableCaching
public class RedisConfig extends CachingConfigurerSupport { public class RedisConfig {
/** /**
* 在没有指定缓存Key的情况下,key生成策略 * 在没有指定缓存Key的情况下,key生成策略
...@@ -52,41 +53,35 @@ public class RedisConfig extends CachingConfigurerSupport { ...@@ -52,41 +53,35 @@ public class RedisConfig extends CachingConfigurerSupport {
@Bean @Bean
@ConditionalOnBean(name = "redisTemplate") @ConditionalOnBean(name = "redisTemplate")
public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory) { public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer(); return new RedisCacheManager(
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
this.redisCacheConfigurationWithTtl(30), // 默认策略,未配置的 key 会使用这个
this.redisCacheConfigurationMap() // 指定 key 策略
);
}
private Map<String, RedisCacheConfiguration> redisCacheConfigurationMap() {
Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
redisCacheConfigurationMap.put("system:users", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put("system:dicts", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put("data:factory:sources", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put("data:factory:sets", redisCacheConfigurationWithTtl(30));
redisCacheConfigurationMap.put("data:market:apis", redisCacheConfigurationWithTtl(30));
return redisCacheConfigurationMap;
}
//解决查询缓存转换异常的问题 private RedisCacheConfiguration redisCacheConfigurationWithTtl(Integer minutes) {
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper om = new ObjectMapper(); ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om); jackson2JsonRedisSerializer.setObjectMapper(om);
//spring cache注解序列化配置 RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
//默认缓存过期时间 RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)
.entryTtl(Duration.ofMinutes(30)) ).entryTtl(Duration.ofMinutes(minutes));
//key序列化方式 return redisCacheConfiguration;
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
//value序列化方式
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
//不缓存null值
.disableCachingNullValues();
//设置一个初始化的缓存名称set集合
// Set<String> cacheNames = new HashSet<>();
// cacheNames.add("user");
//对每个缓存名称应用不同的配置,自定义过期时间
// Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
// configMap.put("user", redisCacheConfiguration.entryTtl(Duration.ofMinutes(30)));
RedisCacheManager redisCacheManager = RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
.cacheDefaults(redisCacheConfiguration)
// .transactionAware()
//注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置
// .initialCacheNames(cacheNames)
// .withInitialCacheConfigurations(configMap)
.build();
return redisCacheManager;
} }
/** /**
...@@ -95,7 +90,6 @@ public class RedisConfig extends CachingConfigurerSupport { ...@@ -95,7 +90,6 @@ public class RedisConfig extends CachingConfigurerSupport {
* @return * @return
*/ */
@Bean @Bean
@ConditionalOnClass(RedisOperations.class)
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
spring: spring:
redis: redis:
database: 1 database: 1
host: 192.168.234.101 host: 127.0.0.1
port: 6379 port: 6379
password: 1234@abcd # 密码(默认为空) password: # 密码(默认为空)
timeout: 6000ms # 连接超时时长(毫秒) timeout: 6000ms # 连接超时时长(毫秒)
lettuce: lettuce:
pool: pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制) max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接 min-idle: 5 # 连接池中的最小空闲连接
datasource: datasource:
...@@ -41,8 +41,8 @@ spring: ...@@ -41,8 +41,8 @@ spring:
primary: mysql primary: mysql
datasource: datasource:
mysql: mysql:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:mysql://192.168.234.100:3306/data_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:p6spy:mysql://127.0.0.1:3306/data_cloud?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root username: root
password: 1234@abcd password: 1234@abcd
......
...@@ -7,10 +7,16 @@ import cn.datax.service.data.factory.mapstruct.DataSetMapper; ...@@ -7,10 +7,16 @@ import cn.datax.service.data.factory.mapstruct.DataSetMapper;
import cn.datax.service.data.factory.dao.DataSetDao; import cn.datax.service.data.factory.dao.DataSetDao;
import cn.datax.common.base.BaseServiceImpl; import cn.datax.common.base.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
/** /**
* <p> * <p>
* 数据集信息表 服务实现类 * 数据集信息表 服务实现类
...@@ -19,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -19,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional;
* @author yuwei * @author yuwei
* @since 2020-03-20 * @since 2020-03-20
*/ */
@CacheConfig(cacheNames = "data:factory:sets")
@Service @Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntity> implements DataSetService { public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntity> implements DataSetService {
...@@ -36,6 +43,7 @@ public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntit ...@@ -36,6 +43,7 @@ public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntit
dataSetDao.insert(dataSet); dataSetDao.insert(dataSet);
} }
@CachePut(key = "#p0.id")
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateDataSet(DataSetDto dataSetDto) { public void updateDataSet(DataSetDto dataSetDto) {
...@@ -43,6 +51,13 @@ public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntit ...@@ -43,6 +51,13 @@ public class DataSetServiceImpl extends BaseServiceImpl<DataSetDao, DataSetEntit
dataSetDao.updateById(dataSet); dataSetDao.updateById(dataSet);
} }
@Cacheable(key = "#id", unless = "#result == null")
@Override
public DataSetEntity getById(Serializable id) {
return super.getById(id);
}
@CacheEvict(key = "#id")
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteDataSetById(String id) { public void deleteDataSetById(String id) {
......
package cn.datax.service.data.market.api.enums;
public enum ReqMethod {
GET("GET"),
POST("POST");
private String desc;
ReqMethod(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
package cn.datax.service.data.market.api.enums;
public enum ResType {
JSON("JSON");
private String desc;
ResType(String desc) {
this.desc = desc;
}
public String getDesc() {
return desc;
}
}
package cn.datax.service.data.market.mapstruct;
import cn.datax.service.data.market.api.dto.DataApiDto;
import cn.datax.service.data.market.api.dto.ReqParam;
import cn.datax.service.data.market.api.dto.ResParam;
import cn.datax.service.data.market.api.entity.DataApiEntity;
import cn.datax.service.data.market.api.vo.DataApiVo;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2020-04-06T12:17:46+0800",
comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_231 (Oracle Corporation)"
)
@Component
public class DataApiMapperImpl implements DataApiMapper {
@Override
public DataApiDto toDTO(DataApiEntity arg0) {
if ( arg0 == null ) {
return null;
}
DataApiDto dataApiDto = new DataApiDto();
dataApiDto.setId( arg0.getId() );
dataApiDto.setApiName( arg0.getApiName() );
dataApiDto.setApiVersion( arg0.getApiVersion() );
dataApiDto.setApiUrl( arg0.getApiUrl() );
dataApiDto.setRemark( arg0.getRemark() );
dataApiDto.setReqMethod( arg0.getReqMethod() );
dataApiDto.setResType( arg0.getResType() );
dataApiDto.setDeny( arg0.getDeny() );
dataApiDto.setRateLimit( arg0.getRateLimit() );
dataApiDto.setTimes( arg0.getTimes() );
dataApiDto.setSeconds( arg0.getSeconds() );
dataApiDto.setExecuteConfig( arg0.getExecuteConfig() );
List<ReqParam> list = arg0.getReqParams();
if ( list != null ) {
dataApiDto.setReqParams( new ArrayList<ReqParam>( list ) );
}
List<ResParam> list1 = arg0.getResParams();
if ( list1 != null ) {
dataApiDto.setResParams( new ArrayList<ResParam>( list1 ) );
}
return dataApiDto;
}
@Override
public List<DataApiDto> toDTO(List<DataApiEntity> arg0) {
if ( arg0 == null ) {
return null;
}
List<DataApiDto> list = new ArrayList<DataApiDto>( arg0.size() );
for ( DataApiEntity dataApiEntity : arg0 ) {
list.add( toDTO( dataApiEntity ) );
}
return list;
}
@Override
public DataApiVo toVO(DataApiEntity arg0) {
if ( arg0 == null ) {
return null;
}
DataApiVo dataApiVo = new DataApiVo();
dataApiVo.setId( arg0.getId() );
dataApiVo.setStatus( arg0.getStatus() );
dataApiVo.setCreateTime( arg0.getCreateTime() );
dataApiVo.setApiName( arg0.getApiName() );
dataApiVo.setApiVersion( arg0.getApiVersion() );
dataApiVo.setApiUrl( arg0.getApiUrl() );
dataApiVo.setRemark( arg0.getRemark() );
dataApiVo.setReqMethod( arg0.getReqMethod() );
dataApiVo.setDeny( arg0.getDeny() );
dataApiVo.setResType( arg0.getResType() );
dataApiVo.setRateLimit( arg0.getRateLimit() );
dataApiVo.setTimes( arg0.getTimes() );
dataApiVo.setSeconds( arg0.getSeconds() );
dataApiVo.setExecuteConfig( arg0.getExecuteConfig() );
List<ReqParam> list = arg0.getReqParams();
if ( list != null ) {
dataApiVo.setReqParams( new ArrayList<ReqParam>( list ) );
}
List<ResParam> list1 = arg0.getResParams();
if ( list1 != null ) {
dataApiVo.setResParams( new ArrayList<ResParam>( list1 ) );
}
return dataApiVo;
}
@Override
public List<DataApiVo> toVO(List<DataApiEntity> arg0) {
if ( arg0 == null ) {
return null;
}
List<DataApiVo> list = new ArrayList<DataApiVo>( arg0.size() );
for ( DataApiEntity dataApiEntity : arg0 ) {
list.add( toVO( dataApiEntity ) );
}
return list;
}
@Override
public DataApiEntity toEntity(DataApiDto arg0) {
if ( arg0 == null ) {
return null;
}
DataApiEntity dataApiEntity = new DataApiEntity();
dataApiEntity.setId( arg0.getId() );
dataApiEntity.setApiName( arg0.getApiName() );
dataApiEntity.setApiVersion( arg0.getApiVersion() );
dataApiEntity.setApiUrl( arg0.getApiUrl() );
dataApiEntity.setRemark( arg0.getRemark() );
dataApiEntity.setReqMethod( arg0.getReqMethod() );
dataApiEntity.setResType( arg0.getResType() );
dataApiEntity.setDeny( arg0.getDeny() );
dataApiEntity.setRateLimit( arg0.getRateLimit() );
dataApiEntity.setTimes( arg0.getTimes() );
dataApiEntity.setSeconds( arg0.getSeconds() );
dataApiEntity.setExecuteConfig( arg0.getExecuteConfig() );
List<ReqParam> list = arg0.getReqParams();
if ( list != null ) {
dataApiEntity.setReqParams( new ArrayList<ReqParam>( list ) );
}
List<ResParam> list1 = arg0.getResParams();
if ( list1 != null ) {
dataApiEntity.setResParams( new ArrayList<ResParam>( list1 ) );
}
return dataApiEntity;
}
@Override
public List<DataApiEntity> toEntity(List<DataApiDto> arg0) {
if ( arg0 == null ) {
return null;
}
List<DataApiEntity> list = new ArrayList<DataApiEntity>( arg0.size() );
for ( DataApiDto dataApiDto : arg0 ) {
list.add( toEntity( dataApiDto ) );
}
return list;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment