Spring boot 통합 Spring Data Jpa, Redis 및 Spring Cache 시작 연습

6994 단어 Springboot 관련
이틀 동안 Spring Cache를 공부했으니 간단하게 요약해 보겠습니다.먼저, 프로젝트를 만드는 것부터 시작합니다. 저는 Spring tool suit에서 만든 Spring boot + Spring Data Jpa 프로젝트를 사용합니다. 여기서 자세히 설명하지 않겠습니다.프로젝트는 Redis와 Spring Cache를 간단하게 통합합니다.다음은 메인 프로필 응용 프로그램입니다.properties 구성:
  • spring.datasource.url = jdbc:mysql://localhost:3306/test spring.datasource.username = root spring.datasource.password = root spring.datasource.driverClassName = com.mysql.jdbc.Driver Specify the DBMS spring.jpa.database = MYSQL Show or not log for each sql query spring.jpa.show-sql = true Hibernate ddl auto (create, create-drop, update) spring.jpa.hibernate.ddl-auto = update Naming strategy spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy dialet spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect Redis default database index is 0 spring.redis.database=0 Redis server address spring.redis.host=localhost Redis server port spring.redis.port=6379 Redis password spring.redis.password=**

  • User 클래스:
    @Entity
    @Table(name = "user")
    public class User implements Serializable {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
        private String username;
        private String password;
        private String email;
        ...  setter getter
    }
    

    클래스를 시작하려면 @EnableCaching이라는 메모를 추가해야 합니다.
    @SpringBootApplication
    @EnableCaching
    public class SpringDemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringDemoApplication.class, args);
        }
    }
    

    UserRepository는 JpaRepository, PagingAndSortingRepository 두 인터페이스를 실현한다.
    UserServiceImpl 클래스 구현 IUserService 인터페이스:
    @Service
    public class UserServiceImpl implements IUserService {
    
        @Autowired
        private UserRepository userRepository;
    
        @Override
        @CachePut(cacheNames = "user")
        public User save(User user) {
            return userRepository.save(user);
        }
    
        @Override
        @Cacheable(value =  "user", key = "#id")
        public User findById(Long id) {
            Optional op = userRepository.findById(id);
            User user = op.get();
            return user;
        }
    
        @Override
        @Cacheable(value =  "user", key = "#id")
        public User findByUsername(String username) {
            return userRepository.findByUsername(username);
        }
    
        @Override
        @Cacheable(cacheNames = "userList")
        public List findAll() {
            return userRepository.findAll();
        }
    
        @CacheEvict(value = "user",allEntries=true)
        public void clearCache() {}
    
        @CacheEvict(value = "user")
        public void clean(Long id) {}
    
    }
    

    ServiceTest 클래스:
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class ServiceTest {
    
        @Autowired
        private IUserService userService;
    
        @Test
        public void clean() {
            userService.clearCache();
        }
    
        @Test
        public void cleanById() {
            userService.clean(1L);
        }
    
        @Test
        public void get() {
            User user = userService.findById(1L);
            System.out.println(user);
        }
    }
    

    됐어, 코드는 대충 이렇다.다음은 구덩이입니다. 1, @Enable Caching 이것은 시작 클래스에 추가하는 것을 잊지 마십시오.2. 포조의 클래스가 캐시를 하려면 반드시 Serializable 서열화 인터페이스를 실현해야 한다.3. @Cacheable의value는 비워둘 수 없고 키는 지정하지 않을 수 있습니다.4. @CacheEvict(value="user",allEntries=true)는user의 모든 캐시를 제거하는 것을 의미하며,allEntries는 기본적으로false이다.5. 목지청 캐시가 있는 경우:
    @CacheEvict(value = "user")
        public void clean(Long id) {}
    }

    OK, 초보자 한 마리, 스프링카치를 이틀 동안 깨달았고 이해가 얕았으니 양해해 주시고 나중에 천천히 추가해 주세요.

    좋은 웹페이지 즐겨찾기