恒华大厦做网站公司,用阿里云和大淘客做网站,海报设计用什么软件好,产品推广的目的和意义之前练习做过一个网上商城#xff0c;采用SSM框架实现。该项目有一个商品排行榜模块没有实现#xff0c;决定采用springbootdubboredis实现该模块。1.新建springboot项目。本项目的springboot版本号为:org.springframework.bootspring-boot-starter-parent2.1.6.RELEASE引入d…之前练习做过一个网上商城采用SSM框架实现。该项目有一个商品排行榜模块没有实现决定采用springbootdubboredis实现该模块。1.新建springboot项目。本项目的springboot版本号为:org.springframework.bootspring-boot-starter-parent2.1.6.RELEASE引入dubbo及redis起始依赖。com.alibaba.bootdubbo-spring-boot-starter0.2.0org.springframework.bootspring-boot-starter-data-redis2.application.properties中配置如下信息dubbo.application.name baba-product-rankdubbo.registry.address127.0.0.1:2181 #zookeeper地址及端口号dubbo.registry.protocolzookeeperdubbo.protocol.namedubbodubbo.protocol.port20881#配置redis服务器spring.redis.host192.168.1.109 #redis服务器地址spring.redis.port63793.创建ProductRank类并实现序列化importjava.io.Serializable;public class ProductRank implementsSerializable {privateString productId;privateString productName;privateString price;privateString imgUrl;publicString getProductId() {returnproductId;}public voidsetProductId(String productId) {this.productId productId;}publicString getProductName() {returnproductName;}public voidsetProductName(String productName) {this.productName productName;}publicString getPrice() {returnprice;}public voidsetPrice(String price) {this.price price;}publicString getImgUrl() {returnimgUrl;}public voidsetImgUrl(String imgUrl) {this.imgUrl imgUrl;}}4.新建service接口创建该service与ProductRank类时应注意类路径与之前项目路径一致(dubbo引用服务时要求)。importcn.itcast.core.bean.ProductRank;importjava.util.List;importjava.util.Set;public interfaceProductRankService {//若没有该数据记录则添加该数据以及score 若有则直接给score加countpublic void zSetAdd(ProductRank productRank, doublecount);//获取(end-begin)个记录的排名public ListgetSetRank(Long begin, Long end);}5.创建redisconfg类用来向容器中注入redisTemplate以及zSetOperations。importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.redis.connection.RedisConnectionFactory;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.core.ZSetOperations;importorg.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;importorg.springframework.data.redis.serializer.StringRedisSerializer;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom.fasterxml.jackson.databind.ObjectMapper;Configurationpublic classRedisConfig {BeanSuppressWarnings(all)public RedisTemplateredisTemplate(RedisConnectionFactory factory) {RedisTemplate template new RedisTemplate();template.setConnectionFactory(factory);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om newObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);StringRedisSerializer stringRedisSerializer newStringRedisSerializer();//key采用String的序列化方式template.setKeySerializer(stringRedisSerializer);//hash的key也采用String的序列化方式template.setHashKeySerializer(stringRedisSerializer);//value序列化方式采用jacksontemplate.setValueSerializer(jackson2JsonRedisSerializer);//hash的value序列化方式采用jacksontemplate.setHashValueSerializer(jackson2JsonRedisSerializer);template.afterPropertiesSet();returntemplate;}Beanpublic ZSetOperations zSetOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForZSet();}}6.创建serviceimpl实现类。importcn.itcast.core.bean.ProductRank;importcom.alibaba.dubbo.config.annotation.Service;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.core.ZSetOperations;importorg.springframework.stereotype.Component;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;importjava.util.Set;Service //暴露服务Componentpublic class ProductRankServiceImpl implementsProductRankService{AutowiredprivateRedisTemplate redisTemplate;Autowiredprivate ZSetOperationszSetOperations;Overridepublic void zSetAdd(ProductRank productRank,doublecount) {String sortSetName product:rank;zSetOperations.incrementScore(sortSetName,productRank,count);}Overridepublic ListgetSetRank(Long begin, Long end) {List list new ArrayList();String sortSetName product:rank;Set setzSetOperations.reverseRange(sortSetName,begin,end);Iterator itset.iterator();while(it.hasNext()){ProductRank p(ProductRank)it.next();list.add(p);}returnlist;}}7.起始类上添加EnableDubbo注解EnableDubboSpringBootApplicationpublic classBabaProductRankApplication {public static voidmain(String[] args) {SpringApplication.run(BabaProductRankApplication.class, args);}}8.在网上商城项目中引入dubbo依赖com.alibabadubbo2.6.2org.apache.curatorcurator-framework2.12.09.在与新建springboot项目中相同路径下复制service接口类与ProductRank类。 如图所示。10.创建consumer.xml配置文件引用服务。http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsdhttp://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd11.使用注解注入并调用向redis中插入数据。使用redis-manager软件查看向redis中添加的数据如图。12.调用redis中的数据并显示在页面上。在jsp页面上显示结果如下图。