我有一个简单的spring引导应用程序,它与一个自定义jar交互,从第三方应用程序获取数据。
我的spring boot应用程序类如下所示:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
我有这样一个控制器(调用服务方法):
@RequestMapping(value = {"/getTestData.spr"}, method = RequestMethod.GET)
public JsonView getTestData(@RequestParam(value = "childProjectIdKeyName", required = false) String childProjectIdKeyName) {
//Get All Test Case Data
testRunsFromTracker = testRunProgressService.getAllTestRunListByProjects(childProjectIdKeyName);
//Some other logic that returns a JSON View to the front-end
return new JsonView(someManipulatedCollectionDataHere)
}
所调用的服务类如下所示:
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
public class TestService {
@Cacheable (cacheNames = "testRun", key = "#childProjectIdKeyName")
public List<TrackerItemDto> getAllTestRunListByProjects(String childProjectIdKeyName) {
System.out.println(String.format("-----getAllTestRunListByProjects(%s)-----", childProjectIdKeyName));
//-----some complex code that take a long time to execute everytime it is called-----//
}
我有我的 pom.xml
包括以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
每次我给控制器打电话 TestService
,我得到的控制台打印在声明中,我仍然缺少一些东西使缓存工作。在缓存实现之后,每次都会调用服务方法,这是不需要的。
我是不是漏了什么?
暂无答案!
目前还没有任何答案,快来回答吧!