缓存一个方法的返回值,除了上篇文章的AOP方式,也可以通过手动的在某个方法上面加一个annotation的方法来实现,比AOP更加灵活,比如有些方法命名没有规律,不好AOP。缺点是侵入了方法内部,要在方法上面写annotation。
实现方法是在基于上篇文章[url] http://lastsoul.iteye.com/admin/blogs/2246566[/url]的基础上,在spring-ehcache.xml上加上:
<!-- 打开注解驱动 -->
<cache:annotation-driven/>
<!-- spring的缓存管理器,他会调用ehcache的缓存管理器 -->
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cache-manager-ref="mycacheManager"/>
java代码:
@Cacheable(value="SimplePageCachingFilter")
@Override
public User findById(Integer id) {
System.out.println(id);
User user=new User();
user.setId(System.currentTimeMillis()+"");
user.setName("test");
return user;
}
其中SimplePageCachingFilter是ehcache.xml中的cachename.
分享到:
相关推荐
在上面的代码中,`@Cacheable`注解使得每次调用`getUserById`时,如果结果已经在缓存中,则直接返回,不再执行方法体内的数据库查询逻辑。`@CacheEvict`注解会在`deleteUserById`执行后清除对应的缓存条目,避免...
<cache:annotation-driven cache-manager="cacheManager"/> ``` ```java @Service public class ExampleService { @Cacheable(value = "myCache", key = "#id") public Object getData(String id) { // 实现...
Hibernate提供了一种强大的二级缓存机制,通过集成第三方缓存解决方案如EhCache,可以进一步提高应用性能。本篇主要讲解如何在Hibernate中配置EhCache,并利用注解进行缓存管理。 首先,我们需要在项目中配置...
1. `@Cacheable`: 用于标记一个方法,当该方法被调用时,如果缓存中有对应的key,则直接返回缓存中的结果,否则执行方法并将其结果存入缓存。 2. `@CacheEvict`: 用于清除指定缓存中的数据。可以标记在一个方法上,...
使用`<cache:annotation-driven/>`元素开启基于注解的缓存控制,并通过`<bean>`标签配置EhCache的`CacheManager`。 4. **实体类和DAO层的缓存配置**:在Hibernate的实体类上,可以使用`@Cacheable`、`@CacheEvict`...
二级缓存可以通过第三方插件如Ehcache实现,可跨Session共享数据。 8. **配置文件**: 虽然本资源是基于Annotation的,但通常还需要一个hibernate.cfg.xml配置文件,用于设置数据库连接信息、方言、缓存策略等。在...
现在,当`getUserById`方法被调用时,如果缓存中存在对应ID的用户,将直接从缓存中获取,否则执行数据库查询并将结果存入缓存。这样便实现了基于Ehcache的数据缓存。 为了测试和验证配置是否正确,可以创建一个简单...
通过在业务方法上使用`@Cacheable`,可以将计算结果缓存起来,避免重复计算。 ```java @Service public class UserService { @Cacheable(value = "userCache", key = "#id") public User getUserById(Long id) { ...
在Spring的配置文件中,我们可以使用`<aop:config>`和`<cache:annotation-driven>`标签来启用AOP和缓存注解支持。然后,在我们的业务逻辑类中,可以使用`@Cacheable`注解标记那些需要缓存的方法。 总的来说,通过...
如果缓存中有对应的结果,则会直接返回,不再执行方法。 ```java @Service public class MyService { @Cacheable(value = "myCache", key = "#id") public Object getData(String id) { // 这里是实际的业务...
-- 配置ehcache缓存,如果是本机,没分布式的话,可以考虑就选择ehcache缓存 --> <!-- 如果有多台机子的话,可以考虑部署redis分布式缓存.. --> </bean> <!-- 用户授权信息Cache, 采用EhCache,需要的话就配置...
通过注解 @Cacheable 可以快速添加方法结果到缓存。通过 @CacheEvict 可以快速清除掉指定的缓存。但是,@CacheEvict 注解使用的是 key-value 的,不支持模糊删除,这时候就会遇到问题。 例如,在使用 @Cacheable ...
- **@Cacheable**:用于读取操作,当方法被调用时,如果缓存中存在相同参数的结果,则直接返回缓存中的值;否则执行方法并将其结果缓存。 - **@CachePut**:用于写操作,方法总是会被执行,并且其结果会被缓存,即使...
在`@Around`方法中,我们可以检查缓存是否存在,如果存在则直接返回,否则调用原始方法并存储结果。 5. **使用缓存**:现在,我们可以在服务层的方法上使用`@Cacheable`注解,如: ```java @Service public ...
hibernate-validator-annotation-processor-5.0.0.cr2.jar classmate-0.8.0.jar jboss-logging-3.1.1.GA.jar validation-api-1.1.0.cr1.jar 【ajax】 jackson-annotations-2.1.5.jar jackson-core-2.1.5.jar...
当相同`id`的请求再次到来时,Spring将从缓存中返回结果,而不是重新执行方法。 通过以上步骤,我们就成功地将EhCache整合到了Spring Boot应用中。EhCache不仅提升了数据访问速度,还降低了数据库的压力,是构建高...
在Spring中,我们可以使用注解来声明哪些方法的结果应该被缓存。首先,启用缓存注解支持: ```xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=...
在Spring的配置文件(如applicationContext.xml)中,我们可以使用`<ehcache:annotation-driven/>`元素启用基于注解的缓存管理,并定义一个`<ehcache:config>`来配置EHCache的属性,如缓存的最大大小、过期时间等。...
为了确保这种方法的有效性,在使用 EhCache 时需要保证缓存方法对于相同的方法参数总是有相同的返回结果。 #### 四、Spring 配置 EhCache 支持 要使 Spring 能够支持基于注解的缓存功能,首先需要在 Spring 的配置...
这里,`@Cacheable`注解表示当方法被调用时,其结果会被缓存,`value`参数指定缓存名称,`key`参数用于生成缓存键。`@CacheEvict`注解则用于清除指定缓存中的数据。 总结来说,Spring MVC与EHCache的集成主要涉及...