前文:今天在使用Spring Boot项目使用Cache中出现的小失误,那先将自己创建项目的过程摆出来

1.首先创建一个Spring Boot的项目(我这里使用的开发工具是Intellij IDEA),并且导入相关依赖

2.创建Bean对象

public class User implements Serializable {
    private Long id;    //id
    private String username;    //账号
    private String password;    //密码

    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

3.Service

@Service
@CacheConfig(cacheNames = "c1")
public class UserService {
    @Cacheable
    public User getUserById(Long id){
        System.out.println(id);
        User user = new User();
        user.setId(id);
        return user;
    }
}

4.测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class RediscacheApplicationTests {
    @Autowired
    UserService userService;

    @Test
    public void contextLoads() {
        User userById = userService.getUserById(99L);
        System.out.println("userById >>> " + userById);
        User userById2 = userService.getUserById(99L);
        System.out.println("userById2 >>> " + userById2);
    }

}

5.配置文件中注册redis相关信息

#这里是我这里本地装有redis的linux地址
spring.redis.host=192.168.209.131
spring.redis.port=6379
spring.redis.database=0

spring.cache.cache-names=c1

6.开启redis

然后启动!

从控制台这里可以看到方法执行了,并且调用了service中的方法,出现了99

为了检测redis中是否拥有了缓存,再次执行!

。。。?

按照道理来说,这次执行会直接调用缓存里的数据,这里不应该执行service方法里面的内容(也就是不应该出现99的)

那我们看看redis里面的参数

从这里我们可以看出redis并没有任何缓存,我推断这里是没有启动缓存所引起的,跑回主方法看看

@SpringBootApplication
public class RediscacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(RediscacheApplication.class, args);
    }
}

好的,问题出在这里,少了一个@EnableCaching注解来启动缓存,加上注解:

@EnableCaching  //这里画个重点
@SpringBootApplication
public class RediscacheApplication {
    public static void main(String[] args) {
        SpringApplication.run(RediscacheApplication.class, args);
    }
}

那么,启动!!!

好的,这次99只出现一次,说明调用了一次service里的方法,并将数据保存到了缓存中。在第二次调用id=99的user对象时,直接从缓存中获取。测试成功!

那这次的问题就解决了,积累点点滴滴,一步一脚印,加油

posted on 2019-04-15 21:28  寒翼绵羊  阅读(269)  评论(0编辑  收藏  举报