背景
参与的一个项目,内容是把公司原有封装的框架中的功能组件 改造升级为starter.因为保密原因这里不方便透露是什么项目。就把我改造中的一些思路以及做法梳理出来,做个总结。因为是十年前的老框架,那会springboot还没诞生,整个框架的使用比较繁琐,配置也比较麻烦。虽然有使用文档,但是随着技术的更新迭代,以及人员更替,原先研发那套框架的人大部分各奔东西,新进来的人学习接手,以及后期维护成本较高,基于此,结合现如今springboot对现如今项目开发的革命性效率提高。改造原有的框架很有必要,目的就是减少配置,“约定优于配置”。
改造思路
通过运行该框架的demo来分析各个组件的使用方式,拿其中一个组件来分析,我们需要看demo工程它初始化了哪些bean,这些bean之间的依赖关系,初始化时都有哪些参数需要注入,有哪些配置项等等。然后按照springboot的规范进行改造。
第一步
分析哪些类是作为bean,需要初始化注入到spring容器中的。
把bean注入到spring容器中,原始的做法是通过spring的xml文件来配置,类似如下:
<bean id="demo" class="com.demo.Person" />
<bean id="person" class="com.demo.Person">
<property name="name">
<value>zhangsan</value>
</property>
<property name="age">
<value>10</value>
</property>
</bean>
<bean id="userService" class="com.demo.service.UserServiceImpl">
<property name="userDao">
<bean class="com.demo.Dao.UserDaoImpl"/>
</property>
</bean>
<bean id="person" class="com.demo.Person">
<constructor-arg type="java.lang.String" index="0">
<value>zhangsan</value>
</constructor-arg>
<constructor-arg type="int" index="1">
<value>10</value>
</constructor-arg>
</bean>
按照springboot的规范,我们可以通过配置类的形式管理这些需要初始化注入的bean,这个配置类其实就相当于原始的那个xml配置文件。配置类的注解@Configuration,所有与初始化bean相关的注解如下:
这里提供一个样例参考:
package com.zengtengpeng.configuration;
import com.zengtengpeng.aop.LockAop;
import com.zengtengpeng.aop.MQAop;
import com.zengtengpeng.mq.RedissonMQListener;
import com.zengtengpeng.operation.RedissonBinary;
import com.zengtengpeng.operation.RedissonCollection;
import com.zengtengpeng.operation.RedissonObject;
import com.zengtengpeng.properties.MultipleServerConfig;
import com.zengtengpeng.properties.RedissonProperties;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.Codec;
import org.redisson.config.*;
import org.redisson.connection.balancer.LoadBalancer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
@Configuration
@EnableConfigurationProperties(value = RedissonProperties.class)
@ConditionalOnClass(RedissonProperties.class)
public class RedissonConfiguration {
@Autowired
private RedissonProperties redissonProperties;
@Bean
@ConditionalOnMissingBean(LockAop.class)
public LockAop lockAop() {
return new LockAop();
}
@Bean
@ConditionalOnMissingBean(MQAop.class)
public MQAop MQAop() {
return new MQAop();
}
@Bean
@ConditionalOnMissingBean(RedissonBinary.class)
public RedissonBinary RedissonBinary() {
return new RedissonBinary();
}
@Bean
@ConditionalOnMissingBean(RedissonObject.class)
public RedissonObject RedissonObject() {
return new RedissonObject();
}
@Bean
@ConditionalOnMissingBean(RedissonCollection.class)
public RedissonCollection RedissonCollection() {
return new RedissonCollection();
}
@Bean
@ConditionalOnMissingBean(RedissonClient.class)
public RedissonClient redissonClient() {
Config config=new Config();
try {
config.setCodec((Codec) Class.forName(redissonProperties.getCodec()).newInstance());
} catch (Exception e) {
throw new RuntimeException(e);
}
config.setTransportMode(redissonProperties.getTransportMode());
if(redissonProperties.getThreads()!=null){
config.setThreads(redissonProperties.getThreads());
}
if(redissonProperties.getNettyThreads()!=null){
config.setNettyThreads(redissonProperties.getNettyThreads());
}
config.setReferenceEnabled(redissonProperties.getReferenceEnabled());
config.setLockWatchdogTimeout(redissonProperties.getLockWatchdogTimeout());
config.setKeepPubSubOrder(redissonProperties.getKeepPubSubOrder());
config.setDecodeInExecutor(redissonProperties.getDecodeInExecutor());
config.setUseScriptCache(redissonProperties.getUseScriptCache());
config.setMinCleanUpDelay(redissonProperties.getMinCleanUpDelay());
config.setMaxCleanUpDelay(redissonProperties.getMaxCleanUpDelay());
MultipleServerConfig multipleServerConfig = redissonProperties.getMultipleServerConfig();
switch (redissonProperties.getModel()){
case SINGLE:
SingleServerConfig singleServerConfig = config.useSingleServer();
com.zengtengpeng.properties.SingleServerConfig param = redissonProperties.getSingleServerConfig();
singleServerConfig.setAddress(prefixAddress(param.getAddress()));
singleServerConfig.setConnectionMinimumIdleSize(param.getConnectionMinimumIdleSize());
singleServerConfig.setConnectionPoolSize(param.getConnectionPoolSize());
singleServerConfig.setDatabase(param.getDatabase());
singleServerConfig.setDnsMonitoringInterval(param.getDnsMonitoringInterval());
singleServerConfig.setSubscriptionConnectionMinimumIdleSize(param.getSubscriptionConnectionMinimumIdleSize());
singleServerConfig.setSubscriptionConnectionPoolSize(param.getSubscriptionConnectionPoolSize());
singleServerConfig.setClientName(redissonProperties.getClientName());
singleServerConfig.setConnectTimeout(redissonProperties.getConnectTimeout());
singleServerConfig.setIdleConnectionTimeout(redissonProperties.getIdleConnectionTimeout());
singleServerConfig.setKeepAlive(redissonProperties.getKeepAlive());
singleServerConfig.setPassword(redissonProperties.getPassword());
singleServerConfig.setPingConnectionInterval(redissonProperties.getPingConnectionInterval());
singleServerConfig.setRetryAttempts(redissonProperties.getRetryAttempts());
singleServerConfig.setRetryInterval(redissonProperties.getRetryInterval());
singleServerConfig.setSslEnableEndpointIdentification(redissonProperties.getSslEnableEndpointIdentification());
singleServerConfig.setSslKeystore(redissonProperties.getSslKeystore());
singleServerConfig.setSslKeystorePassword(redissonProperties.getSslKeystorePassword());
singleServerConfig.setSslProvider(redissonProperties.getSslProvider());
singleServerConfig.setSslTruststore(redissonProperties.getSslTruststore());
singleServerConfig.setSslTruststorePassword(redissonProperties.getSslTruststorePassword());
singleServerConfig.setSubscriptionsPerConnection(redissonProperties.getSubscriptionsPerConnection());
singleServerConfig.setTcpNoDelay(redissonProperties.getTcpNoDelay());
singleServerConfig.setTimeout(redissonProperties.getTimeout());
break;
case CLUSTER:
ClusterServersConfig clusterServersConfig = config.useClusterServers();
clusterServersConfig.setScanInterval(multipleServerConfig.getScanInterval());
clusterServersConfig.setSlaveConnectionMinimumIdleSize(multipleServerConfig.getSlaveConnectionMinimumIdleSize());
clusterServersConfig.setSlaveConnectionPoolSize(multipleServerConfig.getSlaveConnectionPoolSize());
clusterServersConfig.setFailedSlaveReconnectionInterval(multipleServerConfig.getFailedSlaveReconnectionInterval());
clusterServersConfig.setFailedSlaveCheckInterval(multipleServerConfig.getFailedSlaveCheckInterval());
clusterServersConfig.setMasterConnectionMinimumIdleSize(multipleServerConfig.getMasterConnectionMinimumIdleSize());
clusterServersConfig.setMasterConnectionPoolSize(multipleServerConfig.getMasterConnectionPoolSize());
clusterServersConfig.setReadMode(multipleServerConfig.getReadMode());
clusterServersConfig.setSubscriptionMode(multipleServerConfig.getSubscriptionMode());
clusterServersConfig.setSubscriptionConnectionMinimumIdleSize(multipleServerConfig.getSubscriptionConnectionMinimumIdleSize());
clusterServersConfig.setSubscriptionConnectionPoolSize(multipleServerConfig.getSubscriptionConnectionPoolSize());
clusterServersConfig.setDnsMonitoringInterval(multipleServerConfig.getDnsMonitoringInterval());
try {
clusterServersConfig.setLoadBalancer((LoadBalancer) Class.forName(multipleServerConfig.getLoadBalancer()).newInstance());
} catch (Exception e) {
throw new RuntimeException(e);
}
for (String nodeAddress : multipleServerConfig.getNodeAddresses()) {
clusterServersConfig.addNodeAddress(prefixAddress(nodeAddress));
}
clusterServersConfig.setClientName(redissonProperties.getClientName());
clusterServersConfig.setConnectTimeout(redissonProperties.getConnectTimeout());
clusterServersConfig.setIdleConnectionTimeout(redissonProperties.getIdleConnectionTimeout());
clusterServersConfig.setKeepAlive(redissonProperties.getKeepAlive());
clusterServersConfig.setPassword(redissonProperties.getPassword());
clusterServersConfig.setPingConnectionInterval(redissonProperties.getPingConnectionInterval());
clusterServersConfig.setRetryAttempts(redissonProperties.getRetryAttempts());
clusterServersConfig.setRetryInterval(redissonProperties.getRetryInterval());
clusterServersConfig.setSslEnableEndpointIdentification(redissonProperties.getSslEnableEndpointIdentification());
clusterServersConfig.setSslKeystore(redissonProperties.getSslKeystore());
clusterServersConfig.setSslKeystorePassword(redissonProperties.getSslKeystorePassword());
clusterServersConfig.setSslProvider(redissonProperties.getSslProvider());
clusterServersConfig.setSslTruststore(redissonProperties.getSslTruststore());
clusterServersConfig.setSslTruststorePassword(redissonProperties.getSslTruststorePassword());
clusterServersConfig.setSubscriptionsPerConnection(redissonProperties.getSubscriptionsPerConnection());
clusterServersConfig.setTcpNoDelay(redissonProperties.getTcpNoDelay());
clusterServersConfig.setTimeout(redissonProperties.getTimeout());
break;
case SENTINEL:
SentinelServersConfig sentinelServersConfig = config.useSentinelServers();
sentinelServersConfig.setDatabase(multipleServerConfig.getDatabase());
sentinelServersConfig.setMasterName(multipleServerConfig.getMasterName());
sentinelServersConfig.setScanInterval(multipleServerConfig.getScanInterval());
sentinelServersConfig.setSlaveConnectionMinimumIdleSize(multipleServerConfig.getSlaveConnectionMinimumIdleSize());
sentinelServersConfig.setSlaveConnectionPoolSize(multipleServerConfig.getSlaveConnectionPoolSize());
sentinelServersConfig.setFailedSlaveReconnectionInterval(multipleServerConfig.getFailedSlaveReconnectionInterval());
sentinelServersConfig.setFailedSlaveCheckInterval(multipleServerConfig.getFailedSlaveCheckInterval());
sentinelServersConfig.setMasterConnectionMinimumIdleSize(multipleServerConfig.getMasterConnectionMinimumIdleSize());
sentinelServersConfig.setMasterConnectionPoolSize(multipleServerConfig.getMasterConnectionPoolSize());
sentinelServersConfig.setReadMode(multipleServerConfig.getReadMode());
sentinelServersConfig.setSubscriptionMode(multipleServerConfig.getSubscriptionMode());
sentinelServersConfig.setSubscriptionConnectionMinimumIdleSize(multipleServerConfig.getSubscriptionConnectionMinimumIdleSize());
sentinelServersConfig.setSubscriptionConnectionPoolSize(multipleServerConfig.getSubscriptionConnectionPoolSize());
sentinelServersConfig.setDnsMonitoringInterval(multipleServerConfig.getDnsMonitoringInterval());
try {
sentinelServersConfig.setLoadBalancer((LoadBalancer) Class.forName(multipleServerConfig.getLoadBalancer()).newInstance());
} catch (Exception e) {
throw new RuntimeException(e);
}
for (String nodeAddress : multipleServerConfig.getNodeAddresses()) {
sentinelServersConfig.addSentinelAddress(prefixAddress(nodeAddress));
}
sentinelServersConfig.setClientName(redissonProperties.getClientName());
sentinelServersConfig.setConnectTimeout(redissonProperties.getConnectTimeout());
sentinelServersConfig.setIdleConnectionTimeout(redissonProperties.getIdleConnectionTimeout());
sentinelServersConfig.setKeepAlive(redissonProperties.getKeepAlive());
sentinelServersConfig.setPassword(redissonProperties.getPassword());
sentinelServersConfig.setPingConnectionInterval(redissonProperties.getPingConnectionInterval());
sentinelServersConfig.setRetryAttempts(redissonProperties.getRetryAttempts());
sentinelServersConfig.setRetryInterval(redissonProperties.getRetryInterval());
sentinelServersConfig.setSslEnableEndpointIdentification(redissonProperties.getSslEnableEndpointIdentification());
sentinelServersConfig.setSslKeystore(redissonProperties.getSslKeystore());
sentinelServersConfig.setSslKeystorePassword(redissonProperties.getSslKeystorePassword());
sentinelServersConfig.setSslProvider(redissonProperties.getSslProvider());
sentinelServersConfig.setSslTruststore(redissonProperties.getSslTruststore());
sentinelServersConfig.setSslTruststorePassword(redissonProperties.getSslTruststorePassword());
sentinelServersConfig.setSubscriptionsPerConnection(redissonProperties.getSubscriptionsPerConnection());
sentinelServersConfig.setTcpNoDelay(redissonProperties.getTcpNoDelay());
sentinelServersConfig.setTimeout(redissonProperties.getTimeout());
break;
case REPLICATED:
ReplicatedServersConfig replicatedServersConfig = config.useReplicatedServers();
replicatedServersConfig.setDatabase(multipleServerConfig.getDatabase());
replicatedServersConfig.setScanInterval(multipleServerConfig.getScanInterval());
replicatedServersConfig.setSlaveConnectionMinimumIdleSize(multipleServerConfig.getSlaveConnectionMinimumIdleSize());
replicatedServersConfig.setSlaveConnectionPoolSize(multipleServerConfig.getSlaveConnectionPoolSize());
replicatedServersConfig.setFailedSlaveReconnectionInterval(multipleServerConfig.getFailedSlaveReconnectionInterval());
replicatedServersConfig.setFailedSlaveCheckInterval(multipleServerConfig.getFailedSlaveCheckInterval());
replicatedServersConfig.setMasterConnectionMinimumIdleSize(multipleServerConfig.getMasterConnectionMinimumIdleSize());
replicatedServersConfig.setMasterConnectionPoolSize(multipleServerConfig.getMasterConnectionPoolSize());
replicatedServersConfig.setReadMode(multipleServerConfig.getReadMode());
replicatedServersConfig.setSubscriptionMode(multipleServerConfig.getSubscriptionMode());
replicatedServersConfig.setSubscriptionConnectionMinimumIdleSize(multipleServerConfig.getSubscriptionConnectionMinimumIdleSize());
replicatedServersConfig.setSubscriptionConnectionPoolSize(multipleServerConfig.getSubscriptionConnectionPoolSize());
replicatedServersConfig.setDnsMonitoringInterval(multipleServerConfig.getDnsMonitoringInterval());
try {
replicatedServersConfig.setLoadBalancer((LoadBalancer) Class.forName(multipleServerConfig.getLoadBalancer()).newInstance());
} catch (Exception e) {
throw new RuntimeException(e);
}
for (String nodeAddress : multipleServerConfig.getNodeAddresses()) {
replicatedServersConfig.addNodeAddress(prefixAddress(nodeAddress));
}
replicatedServersConfig.setClientName(redissonProperties.getClientName());
replicatedServersConfig.setConnectTimeout(redissonProperties.getConnectTimeout());
replicatedServersConfig.setIdleConnectionTimeout(redissonProperties.getIdleConnectionTimeout());
replicatedServersConfig.setKeepAlive(redissonProperties.getKeepAlive());
replicatedServersConfig.setPassword(redissonProperties.getPassword());
replicatedServersConfig.setPingConnectionInterval(redissonProperties.getPingConnectionInterval());
replicatedServersConfig.setRetryAttempts(redissonProperties.getRetryAttempts());
replicatedServersConfig.setRetryInterval(redissonProperties.getRetryInterval());
replicatedServersConfig.setSslEnableEndpointIdentification(redissonProperties.getSslEnableEndpointIdentification());
replicatedServersConfig.setSslKeystore(redissonProperties.getSslKeystore());
replicatedServersConfig.setSslKeystorePassword(redissonProperties.getSslKeystorePassword());
replicatedServersConfig.setSslProvider(redissonProperties.getSslProvider());
replicatedServersConfig.setSslTruststore(redissonProperties.getSslTruststore());
replicatedServersConfig.setSslTruststorePassword(redissonProperties.getSslTruststorePassword());
replicatedServersConfig.setSubscriptionsPerConnection(redissonProperties.getSubscriptionsPerConnection());
replicatedServersConfig.setTcpNoDelay(redissonProperties.getTcpNoDelay());
replicatedServersConfig.setTimeout(redissonProperties.getTimeout());
break;
case MASTERSLAVE:
MasterSlaveServersConfig masterSlaveServersConfig = config.useMasterSlaveServers();
masterSlaveServersConfig.setDatabase(multipleServerConfig.getDatabase());
masterSlaveServersConfig.setSlaveConnectionMinimumIdleSize(multipleServerConfig.getSlaveConnectionMinimumIdleSize());
masterSlaveServersConfig.setSlaveConnectionPoolSize(multipleServerConfig.getSlaveConnectionPoolSize());
masterSlaveServersConfig.setFailedSlaveReconnectionInterval(multipleServerConfig.getFailedSlaveReconnectionInterval());
masterSlaveServersConfig.setFailedSlaveCheckInterval(multipleServerConfig.getFailedSlaveCheckInterval());
masterSlaveServersConfig.setMasterConnectionMinimumIdleSize(multipleServerConfig.getMasterConnectionMinimumIdleSize());
masterSlaveServersConfig.setMasterConnectionPoolSize(multipleServerConfig.getMasterConnectionPoolSize());
masterSlaveServersConfig.setReadMode(multipleServerConfig.getReadMode());
masterSlaveServersConfig.setSubscriptionMode(multipleServerConfig.getSubscriptionMode());
masterSlaveServersConfig.setSubscriptionConnectionMinimumIdleSize(multipleServerConfig.getSubscriptionConnectionMinimumIdleSize());
masterSlaveServersConfig.setSubscriptionConnectionPoolSize(multipleServerConfig.getSubscriptionConnectionPoolSize());
masterSlaveServersConfig.setDnsMonitoringInterval(multipleServerConfig.getDnsMonitoringInterval());
try {
masterSlaveServersConfig.setLoadBalancer((LoadBalancer) Class.forName(multipleServerConfig.getLoadBalancer()).newInstance());
} catch (Exception e) {
throw new RuntimeException(e);
}
int index=0;
for (String nodeAddress : multipleServerConfig.getNodeAddresses()) {
if(index++==0){
masterSlaveServersConfig.setMasterAddress(prefixAddress(nodeAddress));
}else{
masterSlaveServersConfig.addSlaveAddress(prefixAddress(nodeAddress));
}
}
masterSlaveServersConfig.setClientName(redissonProperties.getClientName());
masterSlaveServersConfig.setConnectTimeout(redissonProperties.getConnectTimeout());
masterSlaveServersConfig.setIdleConnectionTimeout(redissonProperties.getIdleConnectionTimeout());
masterSlaveServersConfig.setKeepAlive(redissonProperties.getKeepAlive());
masterSlaveServersConfig.setPassword(redissonProperties.getPassword());
masterSlaveServersConfig.setPingConnectionInterval(redissonProperties.getPingConnectionInterval());
masterSlaveServersConfig.setRetryAttempts(redissonProperties.getRetryAttempts());
masterSlaveServersConfig.setRetryInterval(redissonProperties.getRetryInterval());
masterSlaveServersConfig.setSslEnableEndpointIdentification(redissonProperties.getSslEnableEndpointIdentification());
masterSlaveServersConfig.setSslKeystore(redissonProperties.getSslKeystore());
masterSlaveServersConfig.setSslKeystorePassword(redissonProperties.getSslKeystorePassword());
masterSlaveServersConfig.setSslProvider(redissonProperties.getSslProvider());
masterSlaveServersConfig.setSslTruststore(redissonProperties.getSslTruststore());
masterSlaveServersConfig.setSslTruststorePassword(redissonProperties.getSslTruststorePassword());
masterSlaveServersConfig.setSubscriptionsPerConnection(redissonProperties.getSubscriptionsPerConnection());
masterSlaveServersConfig.setTcpNoDelay(redissonProperties.getTcpNoDelay());
masterSlaveServersConfig.setTimeout(redissonProperties.getTimeout());
break;
}
return Redisson.create(config);
}
private String prefixAddress(String address){
if(!StringUtils.isEmpty(address)&&!address.startsWith("redis")){
return "redis://"+address;
}
return address;
}
}
@Configuration
@Import
@Bean
***
由于一些bean在初始化的时候需要满足某个条件,这是条件注解就派上用场
如下:
第二步
在resources 目录下新建一个METE-INF文件夹,在该文件夹下新建一个spring.factories文件,内容如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=
com.zengtengpeng.configuration.RedissonConfiguration
第三步
配置项如何改造?
通常是通过一个配置项的类来管理一般命名为xxxProperties.java.。该类上需加注解@Configurationproperties(pretiex ="spring.xxx.xxx")
package com.zengtengpeng.properties;
import com.zengtengpeng.enums.LockModel;
import com.zengtengpeng.enums.Model;
import org.redisson.config.SslProvider;
import org.redisson.config.TransportMode;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import java.net.URI;
import java.net.URL;
@ConfigurationProperties(prefix = "redisson")
public class RedissonProperties {
private Model model=Model.SINGLE;
private String codec="org.redisson.codec.JsonJacksonCodec";
private Integer threads;
private Integer nettyThreads;
private TransportMode transportMode=TransportMode.NIO;
//公共参数
private Integer idleConnectionTimeout = 10000;
// private Integer pingTimeout = 1000;
private Integer connectTimeout = 10000;
private Integer timeout = 3000;
private Integer retryAttempts = 3;
private Integer retryInterval = 1500;
private String password;
private Integer subscriptionsPerConnection = 5;
private String clientName;
private Boolean sslEnableEndpointIdentification = true;
private SslProvider sslProvider=SslProvider.JDK;
private URL sslTruststore;
private String sslTruststorePassword;
private URL sslKeystore;
private String sslKeystorePassword;
private Integer pingConnectionInterval=1000;
private Boolean keepAlive=false;
private Boolean tcpNoDelay=false;
private Boolean referenceEnabled = true;
private Long lockWatchdogTimeout=30000L;
private Boolean keepPubSubOrder=true;
private Boolean decodeInExecutor=false;
private Boolean useScriptCache=false;
private Integer minCleanUpDelay=5;
private Integer maxCleanUpDelay=1800;
//锁的模式 如果不设置 单个key默认可重入锁 多个key默认联锁
private LockModel lockModel;
//等待加锁超时时间 -1一直等待
private Long attemptTimeout= 10000L;
//数据缓存时间 默认30分钟
private Long dataValidTime=1000*60* 30L;
//结束
@NestedConfigurationProperty
private SingleServerConfig singleServerConfig;
@NestedConfigurationProperty
private MultipleServerConfig multipleServerConfig;
public Long getDataValidTime() {
return dataValidTime;
}
public void setDataValidTime(Long dataValidTime) {
this.dataValidTime = dataValidTime;
}
public LockModel getLockModel() {
return lockModel;
}
public void setLockModel(LockModel lockModel) {
this.lockModel = lockModel;
}
public Long getAttemptTimeout() {
return attemptTimeout;
}
public void setAttemptTimeout(Long attemptTimeout) {
this.attemptTimeout = attemptTimeout;
}
public Boolean getReferenceEnabled() {
return referenceEnabled;
}
public void setReferenceEnabled(Boolean referenceEnabled) {
this.referenceEnabled = referenceEnabled;
}
public Long getLockWatchdogTimeout() {
return lockWatchdogTimeout;
}
public void setLockWatchdogTimeout(Long lockWatchdogTimeout) {
this.lockWatchdogTimeout = lockWatchdogTimeout;
}
public Boolean getKeepPubSubOrder() {
return keepPubSubOrder;
}
public void setKeepPubSubOrder(Boolean keepPubSubOrder) {
this.keepPubSubOrder = keepPubSubOrder;
}
public Boolean getDecodeInExecutor() {
return decodeInExecutor;
}
public void setDecodeInExecutor(Boolean decodeInExecutor) {
this.decodeInExecutor = decodeInExecutor;
}
public Boolean getUseScriptCache() {
return useScriptCache;
}
public void setUseScriptCache(Boolean useScriptCache) {
this.useScriptCache = useScriptCache;
}
public Integer getMinCleanUpDelay() {
return minCleanUpDelay;
}
public void setMinCleanUpDelay(Integer minCleanUpDelay) {
this.minCleanUpDelay = minCleanUpDelay;
}
public Integer getMaxCleanUpDelay() {
return maxCleanUpDelay;
}
public void setMaxCleanUpDelay(Integer maxCleanUpDelay) {
this.maxCleanUpDelay = maxCleanUpDelay;
}
public Model getModel() {
return model;
}
public void setModel(Model model) {
this.model = model;
}
public SingleServerConfig getSingleServerConfig() {
return singleServerConfig;
}
public void setSingleServerConfig(SingleServerConfig singleServerConfig) {
this.singleServerConfig = singleServerConfig;
}
public MultipleServerConfig getMultipleServerConfig() {
return multipleServerConfig;
}
public void setMultipleServerConfig(MultipleServerConfig multipleServerConfig) {
this.multipleServerConfig = multipleServerConfig;
}
public void setIdleConnectionTimeout(Integer idleConnectionTimeout) {
this.idleConnectionTimeout = idleConnectionTimeout;
}
public void setConnectTimeout(Integer connectTimeout) {
this.connectTimeout = connectTimeout;
}
public void setTimeout(Integer timeout) {
this.timeout = timeout;
}
public void setRetryAttempts(Integer retryAttempts) {
this.retryAttempts = retryAttempts;
}
public void setRetryInterval(Integer retryInterval) {
this.retryInterval = retryInterval;
}
public void setSubscriptionsPerConnection(Integer subscriptionsPerConnection) {
this.subscriptionsPerConnection = subscriptionsPerConnection;
}
public Boolean getSslEnableEndpointIdentification() {
return sslEnableEndpointIdentification;
}
public void setSslEnableEndpointIdentification(Boolean sslEnableEndpointIdentification) {
this.sslEnableEndpointIdentification = sslEnableEndpointIdentification;
}
public void setPingConnectionInterval(Integer pingConnectionInterval) {
this.pingConnectionInterval = pingConnectionInterval;
}
public Boolean getKeepAlive() {
return keepAlive;
}
public void setKeepAlive(Boolean keepAlive) {
this.keepAlive = keepAlive;
}
public Boolean getTcpNoDelay() {
return tcpNoDelay;
}
public void setTcpNoDelay(Boolean tcpNoDelay) {
this.tcpNoDelay = tcpNoDelay;
}
public Integer getThreads() {
return threads;
}
public void setThreads(Integer threads) {
this.threads = threads;
}
public Integer getNettyThreads() {
return nettyThreads;
}
public void setNettyThreads(Integer nettyThreads) {
this.nettyThreads = nettyThreads;
}
public TransportMode getTransportMode() {
return transportMode;
}
public void setTransportMode(TransportMode transportMode) {
this.transportMode = transportMode;
}
public String getCodec() {
return codec;
}
public void setCodec(String codec) {
this.codec = codec;
}
public int getIdleConnectionTimeout() {
return idleConnectionTimeout;
}
public void setIdleConnectionTimeout(int idleConnectionTimeout) {
this.idleConnectionTimeout = idleConnectionTimeout;
}
public int getConnectTimeout() {
return connectTimeout;
}
public void setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
}
public int getTimeout() {
return timeout;
}
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public int getRetryAttempts() {
return retryAttempts;
}
public void setRetryAttempts(int retryAttempts) {
this.retryAttempts = retryAttempts;
}
public int getRetryInterval() {
return retryInterval;
}
public void setRetryInterval(int retryInterval) {
this.retryInterval = retryInterval;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getSubscriptionsPerConnection() {
return subscriptionsPerConnection;
}
public void setSubscriptionsPerConnection(int subscriptionsPerConnection) {
this.subscriptionsPerConnection = subscriptionsPerConnection;
}
public String getClientName() {
return clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
public boolean isSslEnableEndpointIdentification() {
return sslEnableEndpointIdentification;
}
public void setSslEnableEndpointIdentification(boolean sslEnableEndpointIdentification) {
this.sslEnableEndpointIdentification = sslEnableEndpointIdentification;
}
public SslProvider getSslProvider() {
return sslProvider;
}
public void setSslProvider(SslProvider sslProvider) {
this.sslProvider = sslProvider;
}
public String getSslTruststorePassword() {
return sslTruststorePassword;
}
public void setSslTruststorePassword(String sslTruststorePassword) {
this.sslTruststorePassword = sslTruststorePassword;
}
public URL getSslTruststore() {
return sslTruststore;
}
public void setSslTruststore(URL sslTruststore) {
this.sslTruststore = sslTruststore;
}
public URL getSslKeystore() {
return sslKeystore;
}
public void setSslKeystore(URL sslKeystore) {
this.sslKeystore = sslKeystore;
}
public String getSslKeystorePassword() {
return sslKeystorePassword;
}
public void setSslKeystorePassword(String sslKeystorePassword) {
this.sslKeystorePassword = sslKeystorePassword;
}
public int getPingConnectionInterval() {
return pingConnectionInterval;
}
public void setPingConnectionInterval(int pingConnectionInterval) {
this.pingConnectionInterval = pingConnectionInterval;
}
public boolean isKeepAlive() {
return keepAlive;
}
public void setKeepAlive(boolean keepAlive) {
this.keepAlive = keepAlive;
}
public boolean isTcpNoDelay() {
return tcpNoDelay;
}
public void setTcpNoDelay(boolean tcpNoDelay) {
this.tcpNoDelay = tcpNoDelay;
}
}
总结
在升级一些老的组件时,希望能够给小伙伴们提供一些思路。
1、配置项,也就是我们一般开发springboot项目时,在主配置文件application.properties文件中需要配置的参数,类似如下,会给出提示。
这些配置项的文件是来自于哪里呢?其实是来自和spring.factories文件同级目录的spring-configuration-metedata.json这个文件可以手动写,也可使用过依赖自动生成。推荐试用后者。
自动生成元数据的插件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2、改造的目的是为了能够更好的使用,那怎么样才能更好的使用?我们可以利用spring的aop特性,提供给一些自定义注解,通过注解扫描替代配置文件。