当前位置: 首页 > wzjs >正文

做软件赚钱还是做网站赚钱推广产品的软文

做软件赚钱还是做网站赚钱,推广产品的软文,seo网站排名查询,湖南建设网站官网1.单机版配置 我们先看默认SpringBoot中引入Redis时一般的流程. 在Spring Boot应用启动时,RedisAutoConfiguration类会在Spring容器初始化过程中被自动注入。具体过程如下: 启动应用:当应用程序启动时,Spring Boot会扫描类路径中的所有依赖,并通过反射加载带有@Configur…

1.单机版配置

我们先看默认SpringBoot中引入Redis时一般的流程.

在Spring Boot应用启动时,RedisAutoConfiguration类会在Spring容器初始化过程中被自动注入。具体过程如下:

  1. 启动应用:当应用程序启动时,Spring Boot会扫描类路径中的所有依赖,并通过反射加载带有@Configuration等注解的类。
  2. 处理自动配置@EnableAutoConfiguration注解是核心,它会让Spring Boot根据项目中存在的依赖和配置,推断出需要的自动配置类。Spring Boot会读取META-INF/spring.factories文件,该文件定义了多个自动装配依赖的配置类,其中就包括RedisAutoConfiguration
  3. 条件判断与加载RedisAutoConfiguration类上通常会有条件注解,如@ConditionalOnClass,该注解会判断当前配置类对应的类(如Redis客户端相关类)是否在项目中存在。如果存在,就会创建并加载RedisAutoConfiguration这个配置类。
  4. 创建相关Bean:加载完成后,RedisAutoConfiguration会根据环境配置创建相应的Bean,如RedisConnectionFactoryRedisTemplate等,并将这些Bean注入到Spring容器中。

2.集群版自定义配置

现在我们要使用集群版了,那肯定就得重新定制一些配置,用来满足我们的需求。

2.1 resources\META-INFO中的spring.factories中增加我们需要自定义的类,我们增加如下三个类来满足我们的需求。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.common.redis.configure.RedisConfig,\com.common.redis.configure.ClusterRedisConfig,\com.common.redis.service.RedisService

这三个类中, RedisConfig适配单机版的redis, ClusterRedisConfig适配集群版的redis,RedisService封装了RedisTemplate作为服务类可以引入到我们项目中直接使用. 其中单机版和集群版配置可以通过配置文件灵活配置.

2.2 ClusterRedisConfig类,用来设置集群配置。
/*** 集群版 Redis缓存配置类,如需启用请在配置文件中新增:spring.redis.model=cluster*/
@Configuration
@ConditionalOnClass({JedisCluster.class})
@AutoConfigureBefore(RedisAutoConfiguration.class)
@ConditionalOnProperty(prefix = "spring.redis", name = "model", havingValue = "cluster")
public class ClusterRedisConfig {@Autowiredprivate RedisProperties redisProperties;@Beanpublic RedisClusterConfiguration redisClusterConfiguration() {RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration(redisProperties.getCluster().getNodes());redisClusterConfiguration.setPassword(redisProperties.getPassword());return redisClusterConfiguration;}@Beanpublic RedisConnectionFactory redisConnectionFactory(RedisClusterConfiguration redisClusterConfiguration) {ClusterTopologyRefreshOptions clusterTopologyRefreshOptions = ClusterTopologyRefreshOptions.builder().enablePeriodicRefresh().enableAllAdaptiveRefreshTriggers().refreshPeriod(Duration.ofSeconds(5)).build();ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder().topologyRefreshOptions(clusterTopologyRefreshOptions).build();LettuceClientConfiguration lettuceClientConfiguration = LettuceClientConfiguration.builder().readFrom(ReadFrom.REPLICA_PREFERRED).clientOptions(clusterClientOptions).build();return new LettuceConnectionFactory(redisClusterConfiguration, lettuceClientConfiguration);}/*** 设置数据存入redis 的序列化方式* </br>redisTemplate序列化默认使用的jdkSerializeable,存储二进制字节码,导致key会出现乱码,所以自定义* 序列化类** @paramredisConnectionFactory*/@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);ObjectMapper mapper = new ObjectMapper();mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);serializer.setObjectMapper(mapper);// 使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(serializer);// Hash的key也采用StringRedisSerializer的序列化方式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(serializer);template.afterPropertiesSet();return template;}}
2.3 FastJson2JsonRedisSerializer 类 ,使用StringRedisSerializer来序列化和反序列化redis的key值.
/*** Redis使用FastJson序列化** @author dkmk*/
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");static {ParserConfig.getGlobalInstance().setAutoTypeSupport(true);}@SuppressWarnings("unused")private ObjectMapper objectMapper = new ObjectMapper();private Class<T> clazz;public FastJson2JsonRedisSerializer(Class<T> clazz) {super();this.clazz = clazz;}@Overridepublic byte[] serialize(T t) throws SerializationException {if (t == null) {return new byte[0];}return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);}@Overridepublic T deserialize(byte[] bytes) throws SerializationException {if (bytes == null || by
http://www.dtcms.com/wzjs/17390.html

相关文章:

  • 网站长尾词查淘宝关键词排名软件有哪些
  • 澧县网站建设新平台推广
  • 中国建设银行网站个人收入证明百度站长工具怎么关闭
  • 云南省城乡和住房建设厅网站seo综合查询是什么
  • 网站建设与维护试卷 一免费域名申请的方法
  • 自己做的网站如何加视频seo网络推广
  • 做新闻h5网站情感营销
  • 哪两个数字域名是做医疗信息网站的十大广告投放平台
  • 国税网站上如何做股权变更优化网站打开速度
  • 网站建设色竞价推广账户托管服务
  • 做网站 图片 文件夹 放哪儿疫情最新官方消息
  • 中山小型网站建设公司域名服务器ip地址查询
  • 龙口网站制作公司上海搜索引擎优化seo
  • 哔哩哔哩网站免费进入管理人员需要培训哪些课程
  • 电子商务网站建设ppt模板百度投诉电话客服24小时
  • 垂直b2b网站有哪些?引擎seo优
  • 做设计的搜素材上什么网站应用商店aso优化
  • 设计网页代码流程重庆seo
  • 上海网站建设领导品牌大数据营销名词解释
  • 订做网站建设站长工具一区
  • 设计做网站网站推广的案例
  • 百度站长工具大全seo关键词排名优化方案
  • 苏州网站建设网络推广百度网站链接
  • 先做网站后备案吗网站前期推广
  • 合肥市做网站多少钱滨州seo招聘
  • 建设网站有什么法律么运营推广的方式和渠道有哪些
  • 网站建设服务费属于什么科目搜索引擎营销优化
  • 上海做网站收费免费制作网站app
  • 安徽省建设安全监督站的网站兰州网络推广公司哪家好
  • 上海网站优化推广济南seo外包公司