• Home
  • Java
    • All
    • Các ide để lâp trình Java
    • Java-core

    Thuật toán sắp xếp Bubble sort(Sắp xếp nổi bọt)

    Sử dụng ThreadPool và Executor trong Java qua ví dụ

    Ghi Log trong java – Thực hiện như thế nào cho đúng ?

    Ghi Log trong java – Thực hiện như thế nào cho đúng ?

    Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

    Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

    Lộ trình để trở thành Java Dev

    Trending Tags

    • Spring framework
    • Hibernate-JPA
    • Database
      • All
      • Mysql
      • Oracle Database

      Select for update in Oracle

      HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04

      Trending Tags

    • Utility Library
      • All
      • Guava Cache
      Thực hành Cache Guava Cache trong ứng dụng Spring Boot

      Thực hành Cache Guava Cache trong ứng dụng Spring Boot

    • Tech News
    No Result
    View All Result
    • Home
    • Java
      • All
      • Các ide để lâp trình Java
      • Java-core

      Thuật toán sắp xếp Bubble sort(Sắp xếp nổi bọt)

      Sử dụng ThreadPool và Executor trong Java qua ví dụ

      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Lộ trình để trở thành Java Dev

      Trending Tags

      • Spring framework
      • Hibernate-JPA
      • Database
        • All
        • Mysql
        • Oracle Database

        Select for update in Oracle

        HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04

        Trending Tags

      • Utility Library
        • All
        • Guava Cache
        Thực hành Cache Guava Cache trong ứng dụng Spring Boot

        Thực hành Cache Guava Cache trong ứng dụng Spring Boot

      • Tech News
      No Result
      View All Result
      Gà Tồ Study
      No Result
      View All Result
      Home Utility Library

      Thực hành Cache Guava Cache trong ứng dụng Spring Boot

      gatostudy by gatostudy
      13 November, 2019
      in Guava Cache, Uncategorized
      0
      Thực hành Cache Guava Cache trong ứng dụng Spring Boot
      0
      SHARES
      1k
      VIEWS
      Share on FacebookShare on Twitter

      • Tổng quan
      • Chuẩn bị
      • Dự án xây dựng: Springboot + MyBatis + MySQL + Guava Cache
      • Tạo một lớp cấu hình Guava Cache
      • Cấu hình application.properations
      • Viết các hoạt động cơ sở dữ liệu và mã doanh nghiệp được lưu trữ bởi Guava Cache
      • Chuyển đổi lớp chính của ứng dụng Spring Boot
      • Thí nghiệm thực tế

      Tổng quan

      Trong các ứng dụng Internet truy cập đồng thời hiện nay, vai trò của bộ nhớ đệm rất quan trọng và giúp cải thiện hiệu suất chương trình. Spring bắt đầu với 3.x, cũng giới thiệu hỗ trợ cho Cache. Spring Boot mặc định sử dụng SimpleCacheConfiguration bằng cách sử dụng ConcurrentMapCacheManager để thực hiện cache nhưng bài viết này sẽ chỉ ra cách áp dụng bộ đệm Guava Cache cho các ứng dụng Spring Boot.

      Guava Cache là một triển khai cache,  cung cấp các cơ
      chế an toàn luồng, do đó nó đặc biệt phù hợp với các tình huống trong đó mã
      code được dự kiến ​​sẽ được gọi nhiều lần.

       

       


      Chuẩn bị

      • Chuẩn bị cơ sở dữ liệu và bảng dữ liệu và chèn dữ liệu thử nghiệm thích hợp (MySQL)

      Ví dụ: tôi đã chuẩn bị một bảng người dùng với một số bản ghi:

      Chuẩn bị cơ sở dữ liệu và bảng dữ liệu MySQL

      Chuẩn bị cơ sở dữ liệu và bảng dữ liệu MySQL

      Chúng tôi sẽ xem xét ảnh hưởng của bộ đệm Guava Cache sau hoạt động truy cập cơ sở dữ liệu mô phỏng.


      Dự án xây dựng: Springboot + MyBatis + MySQL + Guava Cache

      Thêm phụ thuộc sau vào pom.xml:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      <dependencies>
      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

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

      <!–for mybatis–>
      <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.2</version>
      </dependency>

      <!–for Mysql–>
      <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
      </dependency>

      <!– Spring boot Cache–>
      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
      </dependency>

      <!–for guava cache–>
      <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>27.0.1-jre</version>
      </dependency>

      </dependencies>

      Tạo một lớp cấu hình Guava Cache

      Giới thiệu hồ sơ của Guava Cache GuavaCacheConfig

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      @Configuration
      @EnableCaching
      public class GuavaCacheConfig {

      @Bean
      public CacheManager cacheManager() {
      GuavaCacheManager cacheManager = new GuavaCacheManager();
      cacheManager.setCacheBuilder(
      CacheBuilder.newBuilder().
      expireAfterWrite(10, TimeUnit.SECONDS).
      maximumSize(1000));
      return cacheManager;
      }
      }

      Cấu hình Guava Cache rất đơn giản, chẳng hạn như thời gian tồn tại của bộ đệm cache cấu hình mã ở trên là 10 giây, số lượng bộ nhớ cache tối đa là 1000


      Cấu hình application.properations

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      server.port = 82

      # Cấu hình nguồn dữ liệu Mysql
      spring.datasource.url = jdbc: mysql: //121.116.23.145: 3306 / demo? UseUnicode = true & characterEncoding = utf-8 & useSSL = false
      spring.datasource.username = root
      spring.datasource
      . Datasource.driver-class-name = com.mysql.jdbc.Driver

      # mybatisConfiguration
      mybatis.type-aliases-pack = cn.codesheep.springbt_guava_cache.entity
      mybatis.mapper-vị trí = classpath: mapper / *. xml
      mybatis.configuration.map-underscore-to

      Viết các hoạt động cơ sở dữ liệu và mã doanh nghiệp được lưu trữ bởi Guava Cache

      • Viết thực thể
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      public class User {

      private Long userId;
      private String userName;
      private Integer userAge;

      public Long getUserId() {
      return userId;
      }

      public void setUserId(Long userId) {
      this.userId = userId;
      }

      public String getUserName() {
      return userName;
      }

      public void setUserName(String userName) {
      this.userName = userName;
      }

      public Integer getUserAge() {
      return userAge;
      }

      public void setUserAge(Integer userAge) {
      this.userAge = userAge;
      }
      }
      • Viết bản đồ
      1
      2
      3
      4
      5
      6
      public interface UserMapper {

      List<User> getUsers();
      int addUser(User user);
      List<User> getUsersByName( String userName );
      }
      • Viết dịch vụ
      . 1
      2
      . 3
      . 4
      . 5
      . 6
      . 7
      . 8
      . 9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      @Service
      public class UserService {

      @Autowired
      private UserMapper userMapper;

      public List<User> getUsers() {
      return userMapper.getUsers();
      }

      public int addUser( User user ) {
      return userMapper.addUser(user);
      }

      @Cacheable(value = “user”, key = “#userName”)
      public List<User> getUsersByName( String userName ) {
      List<User> users = userMapper.getUsersByName( userName );
      System.out.println( “从数据库读取,而非读取缓存!” );
      return users;
      }
      }

      Nhìn nó rất rõ ràng, chúng tôi getUsersByNamethêm một chút về giao diện: @Cacheable. Đây là một trong bộ nhớ cache sử dụng các chú thích, ngoài việc sử dụng phổ biến có @CachePutvà @CacheEvitđược giải thích ngắn gọn:

      1. @Cacheable: Được bố trí trong getUsersByNamecác giá trị trả về sẽ được bổ sung vào phương pháp cache. Đồng thời, khi truy vấn, nó sẽ được lấy từ bộ đệm trước và nếu không tồn tại, nó sẽ bắt đầu truy cập vào cơ sở dữ liệu.
      2. @CachePut: Khi xử lý trên phương pháp, có thể được thực hiện theo các thông số được xác định điều kiện đệm, mà @Cacheablengoại trừ @CachePutphương pháp này không được đánh dấu để kết quả kiểm tra có hay không có được thực hiện trước khi bộ nhớ cache trước khi thực hiện, nhưng phương pháp này được thực hiện mỗi khi Và kết quả thực hiện được lưu trữ trong bộ đệm được chỉ định dưới dạng cặp khóa-giá trị, do đó, nó chủ yếu được sử dụng cho các hoạt động bổ sung và sửa đổi dữ liệu.
      3. @CacheEvict: Khi được định cấu hình trên một phương thức, có nghĩa là dữ liệu tương ứng sẽ bị xóa khỏi bộ đệm.
      • Viết điều khiển
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      @RestController
      public class UserController {

      @Autowired
      private UserService userService;

      @Autowired
      CacheManager cacheManager;

      @RequestMapping( value = “/getusersbyname”, method = RequestMethod.POST)
      public List<User> geUsersByName( @RequestBody User user ) {
      System.out.println( “——————————————-” );
      System.out.println(“call /getusersbyname”);
      System.out.println(cacheManager.toString());
      List<User> users = userService.getUsersByName( user.getUserName() );
      return users;
      }

      }

      Chuyển đổi lớp chính của ứng dụng Spring Boot

      Chủ yếu mở chức năng bộ đệm một cách rõ ràng thông qua chú thích @EnableCaching trên lớp khởi động.

      1
      2
      3
      4
      5
      6
      7
      8
      @SpringBootApplication
      @MapperScan ( “cn.codesheep.springbt_guava_cache”)
      @EnableCaching
      public class SpringbtGuavaCacheApplication {
      public static void main (String [] args) {
      SpringApplication.run (SpringbtGuavaCacheApplication.class, args);
      }
      }

      Cấu trúc của toàn bộ dự án cuối cùng đã hoàn thành như sau:

      Hoàn thiện cấu trúc kỹ thuật

      Hoàn thiện cấu trúc kỹ thuật


      Thí nghiệm thực tế

      localhost:82/getusersbynameQuan sát hiệu ứng nhiều lần với giao diện POST dữ liệu:

      Gửi dữ liệu đến giao diện

      Gửi dữ liệu đến giao diện

      Bạn có thể thấy rằng hiệu ứng kích hoạt và vô hiệu hóa bộ đệm như sau (thời gian hiệu lực của người dùng bộ đệm được đặt thành 10 giây trong tệp cấu hình của Guava Cache ở trên):

      Do khả năng hạn chế, nếu có sai sót hoặc bất cập, xin vui lòng phê bình và sửa chữa, và học cách giao tiếp với nhau!

      Previous Post

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Next Post

      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      Next Post
      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      Leave a Reply Cancel reply

      • Trending
      • Comments
      • Latest
      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      24 June, 2020
      Spring Data JPA – Giới thiệu các tính năng và cách sử dụng

      Spring Data JPA – Giới thiệu các tính năng và cách sử dụng

      13 November, 2019
      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      29 November, 2019
      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      14 November, 2019

      Sử dụng ThreadPool và Executor trong Java qua ví dụ

      1
      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      1

      Select for update in Oracle

      0
      Designing a better architecture for a Node.js API

      Designing a better architecture for a Node.js API

      0

      Select for update in Oracle

      23 January, 2022

      HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04

      3 October, 2021

      20 May, 2021

      Giải thuật tìm kiếm nhị phân- Binary Search

      10 March, 2020

      Bài Viết Phổ Biến

      • Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

        Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

        0 shares
        Share 0 Tweet 0
      • Spring Data JPA – Giới thiệu các tính năng và cách sử dụng

        0 shares
        Share 0 Tweet 0
      • Ghi Log trong java – Thực hiện như thế nào cho đúng ?

        0 shares
        Share 0 Tweet 0
      • Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

        0 shares
        Share 0 Tweet 0
      • Thực hành Cache Guava Cache trong ứng dụng Spring Boot

        0 shares
        Share 0 Tweet 0

      Theo dõi blog qua email

      Nhập địa chỉ email của bạn để đăng ký theo dõi và nhận thông báo về các bài mới qua email.

      Join 2 other subscribers

      Gà Tồ Study

      © 2019 Gato Study - Vì một Việt Nam tươi đẹp .

      Keep Camp & Keep Coding

      • About
      • Advertise
      • Careers
      • Contact

      Follow Us

      No Result
      View All Result
      • Home
      • Hibernate-JPA
      • Spring framework
      • Java
      • Api clients
      • Utility Library
      • Guava Cache
      • Apache commons
      • Oracle Database
      • Database
      • Mysql
      • Tech
      • MongoDB
      • Food

      © 2019 Gato Study - Vì một Việt Nam tươi đẹp .