Java Spring缓存未从缓存返回结果

Java 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

我阅读了堆栈上所有与此类似的旧问题,但仍然无法得到解决方案。 我试图在spring 4.x中使用@Cacheable,但我没有从缓存中得到结果:- 我的代码是:

Application.java

@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。感谢您的解释