Spring 3.1提供了对cache的支持,但到目前为止,支持的第三方cache只有Ehcache一种。在以前版本的spring中,也可以通过添加其它包实现对ehcache的注解化支持,但Spring 3.1提供了对cache的原生支持。
首先建好项目提供必要的包:包的用处不多说,然后写好一个ehcache.xml放到classpath下:
ehcache.xml
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<? xml version = "1.0" encoding = "UTF-8" ?>
< ehcache >
< diskStore path = "D:/tmpdir" />
< defaultCache
maxElementsInMemory = "500"
eternal = "false"
timeToIdleSeconds = "300"
timeToLiveSeconds = "1200"
overflowToDisk = "true" />
< cache name = "young" maxElementsInMemory = "150" eternal = "false" timeToLiveSeconds = "36000" timeToIdleSeconds = "3600" overflowToDisk = "true" />
</ ehcache >
|
配置文件中进行了基本的配置,建立了一个叫“young”的cache。然后在非整合spring的时候,测试一下cache是否使用成功:NormalTest.java
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
public class NormalTest {
public static void main(String[] args) {
CacheManager manager = CacheManager.create();
String[] names = manager.getCacheNames();
for ( int i = 0 ; i < names.length; i++) {
System.out.println(names[i]);
}
Cache cache = new Cache( "test" , 150 , true , false , 5 , 2 );
manager.addCache(cache);
cache.put( new Element( "key1" , "value1" ));
Element element = cache.get( "key1" );
System.out.println(element.getValue());
String[] names1 = manager.getCacheNames();
for ( int i = 0 ; i < names1.length; i++) {
System.out.println(names1[i]);
}
}
}
|
运行一下,有输出存进去的值就OK啦。下面开始整合Spring,建立Spring配置文件:applicationContext.xml
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
<? xml version = "1.0" encoding = "UTF-8" ?>
< context:annotation-config />
< context:component-scan base-package = "young" />
< cache:annotation-driven />
< bean id = "cacheManagerFactory" class = "org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:configLocation = "classpath:ehcache.xml"
p:shared = "false" />
< bean id = "cacheManager" class = "org.springframework.cache.ehcache.EhCacheCacheManager"
p:cacheManager-ref = "cacheManagerFactory" />
</ beans >
|
建立一个有缓存使用的类:CacheMethod.java
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package young;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;
@Component
public class CacheMethod {
@Cacheable ( "young" )
public String getYoung(String str) {
System.out.println( "method is running..." );
return "1230-1230-1230-0123-0123" ;
}
}
|
类中只有一个方法,返回固定值,并且会被缓存。最后用Junit4对这个类进行测试:SpringCacheTest.java
code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
@RunWith (SpringJUnit4ClassRunner. class )
@ContextConfiguration (locations = { "classpath:applicationContext.xml" })
public class SpringCacheTest {
@Resource
CacheManager manager;
@Resource
CacheMethod method;
@Test
public void testGetYoung() {
String s = method.getYoung( "str" );
System.out.println(s);
String s1 = method.getYoung( "str" );
System.out.println(s1);
String[] names = manager.getCacheNames();
for ( int i = 0 ; i < names.length; i++) {
System.out.println(names[i]);
}
Cache young = manager.getCache( "young" );
System.out.println( "Cache named 'young':" + young);
assertEquals( "str" , young.getKeys().get( 0 ));
assertEquals(s, young.get( "str" ).getValue());
}
}
|
到此应该就测试成功啦!~最后说下我遇到的错误,最一开始在测试中这样写的:CacheMethod method = new CacheMethod();然后进行调用 ,发现返回值并没有进行缓存,再次调用时仍然会打印出getYoung()中的日志。这是由于这种调用并不是在Spring的管理下进行的,所以Spring也就不能对其进行cache了。
分享到:
相关推荐
**Spring+EhCache缓存实例详解** 在现代的Java企业级应用中,缓存技术扮演着至关重要的角色,它能够显著提升系统性能,减少数据库负载。Spring框架与EhCache的结合,为开发者提供了一种高效、易用的缓存解决方案。...
Spring整合EhCache是一个常见的缓存管理方案,尤其在企业级Java应用中广泛使用。Spring框架提供了对多种缓存技术的支持,包括EhCache,这使得我们能够在Spring应用中轻松地实现数据缓存,提高系统性能。下面我们将...
在Spring 3.1版本中,引入了对缓存的支持,极大地提高了应用程序的性能和效率。这个特性使得开发者能够方便地在应用中集成缓存机制,而无需深入了解底层缓存库的实现细节。本文将围绕Spring 3.1的缓存功能进行详细...
### Spring 整合 EhCache 实现原理与应用详解 #### 一、Spring 对 Cache 的支持 从 Spring 3.1 版本开始,Spring 框架正式引入了对 Cache 的支持,这种支持的方式和原理与 Spring 对事务管理的支持非常类似。通过...
Spring缓存抽象是自Spring 3.1版本引入的,它提供了一个统一的API,支持多种缓存解决方案,如EhCache、Guava Cache、Hazelcast或Infinispan等。这种抽象允许开发者在不依赖特定缓存实现的情况下,轻松地在应用中添加...
### Ehcache分布式缓存及其在Spring中的应用 #### 一、Ehcache概述与原理 Ehcache是一款高效且轻量级的纯Java缓存框架,由于其出色的性能和易于集成的特点,在Java开发中有着广泛的应用。作为Hibernate的默认缓存...
SpringEhcacheOne项目展示了如何通过JavaConfig配置Spring来整合Ehcache,从而提高应用程序的性能和效率。 Ehcache是一款流行的开源Java缓存库,它支持内存和磁盘存储,能够快速访问频繁使用的数据,减少数据库的...
Ehcache与Spring的集成主要通过Spring的缓存抽象实现,这是从Spring 3.1版本开始引入的功能。`org.springframework.core-3.1.1.RELEASE.jar`包含了这一特性所需的类。通过在配置中定义Ehcache作为缓存提供者,我们...
### Spring 3.1 对 Memcached 的集成与应用 #### 一、Spring 集成缓存概述 从 Spring 3.1 开始,Spring 框架正式引入了对缓存的支持,使得开发者能够更加方便地管理和使用缓存技术。这一特性极大地简化了缓存的...
**3.1 集成Spring** 1. **添加依赖**:除了EHCache核心库外,还需要添加Spring对EHCache的支持依赖。 ```xml <groupId>org.springframework <artifactId>spring-cache ${spring.version} ``` 2. **配置...
**3.1 Spring 集成** Spring 框架提供了内置的支持来集成 Ehcache。这使得在 Spring 应用中管理和使用缓存变得更加简单。主要步骤包括: - 添加 Ehcache 相关依赖到项目中。 - 配置 Spring 的缓存管理器,将其绑定...
Spring 3.1 版本引入了基于注解的缓存支持,提供了高度灵活且易于使用的缓存抽象层。Spring Cache 不仅支持使用 SpEL(Spring Expression Language)定义缓存键名及条件判断,而且内置了多种缓存实现的支持,如 ...
- Spring集成了多种缓存解决方案,如Ehcache、Redis等。 - 可以使用`@Cacheable`、`@CachePut`、`@CacheEvict`等注解来实现缓存功能。 通过以上介绍,《精通Spring》一书不仅覆盖了Spring框架的基础概念和核心组件...
**Hibernate 3.1 帮助文档** Hibernate 是一个流行的开源对象关系映射(ORM)框架,它允许Java开发者将数据库操作与业务逻辑解耦,通过对象模型进行数据操作。Hibernate 3.1 版本是其发展过程中的一个重要里程碑,...
它不仅可以与Spring框架无缝集成,自Spring 3.1版本之后,通过注解配置即可便捷地使用,还能够与Hibernate ORM框架配合,成为其默认的二级缓存提供者。此外,Ehcache也可独立于这些框架之外单独运行,满足各种不同...
Spring Cache 是Spring框架提供的一种缓存抽象,从Spring 3.1版本开始引入,目的是为了简化应用程序中的缓存管理,实现缓存透明化。通过在方法上添加特定注解,如@Cacheable、@CacheEvict等,可以轻松地启用缓存功能...
自Spring 3.1起,Spring提供了基于`java.util.concurrent.ConcurrentHashMap`的简单缓存管理器。这种方式无需额外依赖,直接在Spring配置中声明`SimpleCacheManager`,然后可以通过`ConcurrentMapCacheFactoryBean`...
Spring从3.1版本开始引入了自己的缓存抽象,通过`org.springframework.cache.Cache`和`org.springframework.cache.CacheManager`接口统一不同缓存技术。这些接口支持JCache(JSR-107)注解,简化了缓存组件的开发。...