使用Spring Cache缓存出现的小失误

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

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

1661877-20190415212510446-447888385.png

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

1661877-20190415212528229-1921209046.png

然后启动!

1661877-20190415212538837-2007734416.png

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

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

1661877-20190415212546550-311367257.png

。。。?

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

那我们看看redis里面的参数
1661877-20190415212552055-1547141688.png

从这里我们可以看出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);
    }
}

那么,启动!!!

1661877-20190415212629878-720448482.png

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

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

转载于:https://www.cnblogs.com/HYMY-L/p/10713298.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值