Java Spring缓存未从缓存返回结果
我阅读了堆栈上所有与此类似的旧问题,但仍然无法得到解决方案。 我试图在spring 4.x中使用@Cacheable,但我没有从缓存中得到结果:- 我的代码是: Application.javaJava Spring缓存未从缓存返回结果,java,spring,spring-boot,spring-cache,Java,Spring,Spring Boot,Spring Cache,我阅读了堆栈上所有与此类似的旧问题,但仍然无法得到解决方案。 我试图在spring 4.x中使用@Cacheable,但我没有从缓存中得到结果:- 我的代码是: Application.java @SpringBootApplication @EnableCaching public class BootApplication { public static void main(String[] args) { SpringApplication.run(BootApp
@SpringBootApplication
@EnableCaching
public class BootApplication {
public static void main(String[] args) {
SpringApplication.run(BootApplication.class, args);
}
}
控制器:
@RestController
@RequestMapping("/test")
public class BootController {
@Autowired
public BootService oBootService;
@RequestMapping("/list{listing_id}")
public ResponseObj getprodList(@RequestParam("listing_id") Long listing_id){
ResponseObj responseObj=new ResponseObj();
List<BootModel> list =this.oBootService.getprodList(listing_id);
responseObj.setObject(list);
if(list.size()>0){
responseObj.setMessage("success");
responseObj.setStatus("200");
responseObj.setStatus_code(200);
}else{
responseObj.setMessage("success");
responseObj.setStatus("204");
responseObj.setStatus_code(204);
}
return responseObj;
}
@RestController
@请求映射(“/test”)
公共类引导控制器{
@自动连线
公共服务;
@请求映射(“/list{listing_id}”)
public ResponseObj getprodList(@RequestParam(“listing_id”)Long listing_id){
ResponseObj ResponseObj=新的ResponseObj();
List List=this.oBootService.getprodList(列表id);
responseObj.setObject(列表);
如果(list.size()>0){
responseObj.setMessage(“成功”);
响应BJ.setStatus(“200”);
响应bj.setStatus_代码(200);
}否则{
responseObj.setMessage(“成功”);
响应BJ.setStatus(“204”);
响应bj.setStatus_代码(204);
}
返回响应bj;
}
服务类别:
@Service
public class BootService {
@Inject
BootRepo oBootRepo;
@Cacheable(value="prod",key="#listing_id",condition = "#listing_id < 3")
public List<BootModel> getprodList(Long listing_id)
{
List <BootModel> list = oBootRepo.getProdList(listing_id);
return list;
}
@服务
公共类引导服务{
@注入
BootRepo oBootRepo;
@可缓存(value=“prod”,key=“#listing_id”,condition=“#listing_id<3”)
公共列表getprodList(长列表\u id)
{
List List=oBootRepo.getProdList(列表id);
退货清单;
}
当我试图点击url:localhost:8080/prod/test/list时?清单\u id=10
正确的结果出现了,但当我再次点击URL时&然后再次触发查询以获取数据。
当用户点击查询时,结果应该从缓存中显示,而不是从数据库中显示。请指出我错在哪里???您有这个条件“#listing_id<3”,因此您需要尝试一个小于3的其他id。是的,数据的listing_id顺序为1到100,但它具有可缓存性(value=“prod”,key=“#listing_id”,condition=“#listing_id<3”)因此,我想我只会在id小于3时缓存该值。在您的示例中是10 localhost:8080/prod/test/list?listing_id=10,大于3。感谢您的解释,您有这个条件“#listing_id<3”,因此您需要尝试一个小于3的不同id。是的数据具有从1到100的列表id,但它具有可缓存性(value=“prod”,key=“#listing_id”,condition=“#listing_id<3”)因此,我认为只有当id小于3时,我才会缓存该值。在您的示例中是10 localhost:8080/prod/test/list?清单_id=10,大于3。感谢您的解释