用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

fresh    -  云代码空间

——

微服务java_b2b商城系统_java商城源码100%开源适合2次开发(十三)springboot

2019-01-10|371阅||

摘要:微服务java_b2b商城系统_java商城源码100%开源适合2次开发 (十三)springboot集成spring cache

本文介绍如何在springboot中使用默认的spring cache,

声明式缓存

Spring 定义 CacheManager 和 Cache 接口用来统一不同的缓存技术。例如 JCache、 EhCache、 Hazelcast、 Guava、 Redis 等。在使用 Spring 集成 Cache 的时候,我们需要注册实现的 CacheManager 的 Bean。

Spring Boot 为我们自动配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。

默认使用 ConcurrenMapCacheManager

在我们不使用其他第三方缓存依赖的时候,springboot自动采用ConcurrenMapCacheManager作为缓存管理器。

环境依赖

在pom文件引入spring-boot-starter-cache环境依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

创建一个book数据访问层

先创建一个实体类

复制代码
public class Book { private String isbn; private String title; public Book(String isbn, String title) { this.isbn = isbn; this.title = title;
}
….getter 
….setter

} 
复制代码

创建一个数据访问接口

public interface BookRepository {

    Book getByIsbn(String isbn);

}

这个你可以写一个很复杂的数据查询操作,比如操作mysql、nosql等等。为了演示这个栗子,我只做了一下线程的延迟操作,当作是查询数据库的时间。

实现接口类:

复制代码
@Component public class SimpleBookRepository implements BookRepository {

    @Override public Book getByIsbn(String isbn) {
        simulateSlowService(); return new Book(isbn, "Some book");
    } // Don't do this at home private void simulateSlowService() { try { long time = 3000L;
            Thread.sleep(time);
        } catch (InterruptedException e) { throw new IllegalStateException(e);
        }
    }

}
复制代码

测试类

复制代码
@Component public class AppRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(AppRunner.class); private final BookRepository bookRepository; public AppRunner(BookRepository bookRepository) { this.bookRepository = bookRepository;
    }

    @Override public void run(String... args) throws Exception {
        logger.info(".... Fetching books");
        logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
        logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
        logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
        logger.info("isbn-4567 -->" + bookRepository.getByIsbn("isbn-4567"));
        logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
        logger.info("isbn-1234 -->" + bookRepository.getByIsbn("isbn-1234"));
    }

}
复制代码

启动程序,你会发现程序在控制台依次打印了:

复制代码
2014-06-05 12:15:35.783 … : …. Fetching books 2014-06-05 12:15:40.783 … : isbn-1234 –> >Book{isbn=’isbn-1234’, title=’Some book’} 2014-06-05 12:15:43.784 … : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’} 2014-06-05 12:15:46.786 … : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’}
复制代码

你会发现程序依次3s打印一行日志。这时还没开启缓存技术。

开启缓存技术

在程序的入口中加入@ EnableCaching开启缓存技术:

复制代码
@SpringBootApplication
@EnableCaching public class DemoApplication { public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
复制代码

在需要缓存的地方加入@Cacheable注解,比如在getByIsbn()方法上加入@Cacheable(“books”),这个方法就开启了缓存策略,当缓存有这个数据的时候,会直接返回数据,不会等待去查询数据库。

复制代码
@Component public class SimpleBookRepository implements BookRepository {

    @Override
    @Cacheable("books") public Book getByIsbn(String isbn) {
        simulateSlowService(); return new Book(isbn, "Some book");
    } // Don't do this at home private void simulateSlowService() { try { long time = 3000L;
            Thread.sleep(time);
        } catch (InterruptedException e) { throw new IllegalStateException(e);
        }
    }

}
复制代码

这时再启动程序,你会发现程序打印:

isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’} 2017-04-23 18:17:09.479 INFO 8054 — [ main] forezp.AppRunner : isbn-4567 –>Book{isbn=’isbn-4567’, title=’Some book’} 2017-04-23 18:17:09.480 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’} 2017-04-23 18:17:09.480 INFO 8054 — [ main] forezp.AppRunner : isbn-4567 –>Book{isbn=’isbn-4567’, title=’Some book’} 2017-04-23 18:17:09.481 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’} 2017-04-23 18:17:09.481 INFO 8054 — [ main] forezp.AppRunner : isbn-1234 –>Book{isbn=’isbn-1234’, title=’Some book’}

只有打印前面2个数据,程序等了3s,之后的数据瞬间打印在控制台上了,这说明缓存起了作用。

完整项目的源码来源
Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求: yuncode.net

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: fresh
    • 等级: 高级设计师
    • 积分: 5300
    • 代码: 0 个
    • 文章: 221 篇
    • 随想: 0 条
    • 访问: 3 次
    • 关注

    人气代码

      标签

      java(76)api(3)教程(25)Spring(41)cache(1)+(3)springmvc(2)mybatis(4)(十)(1)(十一)(1)Cloud(31)Boot(10)源码(7)简介(1)-(29)项目构建过程(3)关于Spring(2)Cloud的核心特性(1)整合spring(8)cloud云服务架构(9)cloud架构(1)HongHu(1)Cloud云架构(10)登出流程(3)(1)Spring+(1)Commons(1)普通抽象(1)项目过程构建(3)commonserv(1)common-ser(1)commonserv(1)SSO单点登录应用认(1)Cloud分布式微服(1)(1)Eureka(1)云架构代码结构构建(3)分享Spring(3)Cloud大型互联网(1)common-ser(1)SpringClou(1)Cloud--Hon(1)Cloud分布式微服(1)springclou(1)Eureka服务器搭(1)SSO单点登录之OA(1)SSO单点登录之OA(1)Cloud-hong(1)Cloud分布式微服(1)Cloud微服务分布(1)Cloud分布式微服(1)Config客户端使(1)Cloud微服务架构(1)Config环境库(2)Cloud分布式微服(1)Cloud--Hon(1)Cloud分布式微服(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)SSO单点登录之OA(1)根据token获取用(1)commonserv(1)Cloud微服务分布(1)mybatis分布式(1)mybatis分布式(1)mybatis分布式(1)4.2.2以上版本和(1)mybatis分布式(1)mybatis分布式(1)Cloud引导应用程(1)Cloud--Hon(1)Cloud分布式微服(1)Cloud大型互联网(1)Cloud-hong(1)Cloud分布式微服(1)SpringBoot(81)common-ser(1)Cloud分布式微服(1)Cloud企业微服务(1)Cloud自定义引导(1)企业级(26)(一)(1)(二)(1)(三)(1)cloud项目(2)(五)(1)(九)整合sprin(1)commonserv(1)SSO单点登录之OA(1)SSO单点登录之OA(1)(十二)(1)SSO单点登录之OA(1)B2B2C(64)关于SpringCl(1)Cloud构建分布式(1)SpringClou(1)mybatis电子商(1)(九)Java(2)o2o多用户商城(21)(十)Java(1)(十三)java(3)b2b2c多用户商城(6)(十四)Java(2)(十五)Java(1)(十六)Java(1)b2b2c多用户商城(1)SSO单点登录之OA(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)(十七)Java(1)springclou(1)springclou(1)springclou(1)springclou(1)B2B2C多租户电子(1)SpringClou(1)SpringClou(1)项目构建过程(七)(1)(八)Java(1)Config)(8)ssm(17)企业级java(14)shop(22)springclou(1)多用户商城系统源码((1)springclou(1)多用户商城系统源码(9)(十二)java(2)多用户商城系统源码-(3)Sleuth)(2)Springclou(1)分布式、微服务、云架(1)多用户商城系统源码((1)springclou(1)B2B2C多租户电子(1)springclou(1)(三):服务提供与调(1)SpringClou(1)springclou(1)企业云架构commo(1)springclou(1)common-ser(1)springclou(1)commonserv(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)(十一)JAVA(1)b2b2c多用户商城(1)b2b2c多用户商城(1)SSO单点登录之OA(1)springclou(1)springclou(1)配置自动刷新(1)beatlsql(1)多用户商城系统(2)(八)springb(1)多用户商城系统源码((1)b2bc商城系统开源(1)(十)用spring(2)Restdocs创建(1)springboot(1)springboot(1)微服务java_b2(1)(十三)spring(1)springboot(1)(十四)在sprin(1)springclou(1)(二)Spring(3)Boot配置文件详解(5)整合JPA(3)企业分布式微服务云S(1)(五)路由网关(zu(1)b2bc商城系统开源(1)springboot(1)springclou(1)b2b2c多用户商城(1)springclou(1)(九)服务链路追踪((1)b2bc商城系统开源(1)b2b2c多用户商城(1)b2bc商城系统开源(1)Dashboard)(1)springclou(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多用户商城系统源码((1)微服务java_b2(1)b2b2c多用户商城(1)SSO单点登录之OA(1)Springboot(1)Springclou(1)多级分销Spring(1)多级分销Spring(1)(二)java(1)springboot(1)springclou(1)(五)JAVA(1)b2b2c多用户商城(1)Dashboard和(1)(六)企业分布式微服(1)分布式配置中心(Sp(1)(六)(1)Java多用户商城系(1)Java版本多用户B(1)B2B2C源码电子商(1)-(五)路由网关(z(1)Springclou(1)Springboot(1)mybatis电子商(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多用户商城系统源码((1)多用户商城系统(三)(1)SpringBoot(1)高可用的分布式配置中(1)微服务java_b2(1)springclou(1)b2b2c多用户商城(1)springboot(1)b2b2c多用户商城(1)springclou(1)springboot(1)b2b2c多用户商城(1)b2bc商城系统开源(1)(九)服务链路追踪((1)SpringBoot(1)多用户商城系统(八)(1)Springboot(1)springclou(1)springclou(1)多级分销Spring(1)多级分销Spring(1)(十一)docker(1)b2bc商城系统开源(1)springclou(1)b2b2c多用户商城(1)多级分销Spring(1)整合企业架构的技术点(1)springclou(1)springclou(1)b2b2c多用户商城(1)springclou(1)b2b2c多用户商城(1)springclou(1)springclou(1)springclou(1)springclou(1)springclou(1)b2b2c多用户商城(1)springclou(1)b2bc商城系统开源(1)springclou(1)b2b2c多用户商城(1)b2bc商城系统开源(1)b2b2c多用户商城(1)springclou(1)b2bc商城系统开源(1)(四)SpringB(1)多用户商城系统源码((1)微服务java_b2(1)(十)高可用的服务注(1)企业分布式微服务云S(1)(十一)docker(1)多用户商城系统-(七(1)springclou(1)Springclou(1)Springclou(1)b2bc商城系统开源(1)多用户商城系统源码-(1)b2b2c多用户商城(1)b2bc商城系统开源(1)多用户商城系统源码-(1)多用户商城系统-(九(1)多用户商城系统源码-(1)springboot(1)b2b2c多用户商城(1)b2b2c多用户商城(1)多用户商城系统源码((1)(九)springb(1)b2bc商城系统开源(1)教程(十五)Spri(1)(十六)用restT(1)企业SpringBo(1)教程(五)sprin(1)企业(1)教程(六)sprin(1)企业分布式微服务云S(1)(一)服务的注册与发(1)(十六)用restT(1)Cloud微服务架构(1)(六)整合sprin(1)企业云架构commo(1)(七)整合sprin(1)common-ser(1)(八)整合sprin(1)commonserv(1)(十四)在sprin(1)(十五)Spring(1)(十六)用restT(1)(十七)上传文件(1)(十八)定时任务(S(1)Tasks)(1)(十九)(1)验证表单信息(1)(二十)处理表单提交(1)SpringClou(1)服务的注册与发现(E(1)SpringClou(1)服务消费者(rest(1)SpringClou(1)服务消费者(Feig(1)SpringClou(1)(四)(1)断路器(Hystri(1)SpringClou(1)(五)路由网关(zu(1)SpringClou(1)(七)(3)高可用的分布式配置中(1)SpringClou(1)高可用的分布式配置中(1)(一)微服务分布式云(1)(二)微服务分布式云(1)cloud整合企业架(1)(三)微服务分布式云(1)cloud集成项目简(1)(四)微服务分布式云(1)企业分布式微服务云架(1)(五)微服务分布式云(1)(五)微服务分布式云(1)SpringClou(1)分布式配置中心(Sp(1)SpringClou(1)高可用的分布式配置中(1)(一)构建第一个Sp(1)(三)SpringB(1)(四)SpringB(1)(九)springb(1)Restdocs创建(1)

      最新提问

        站长推荐