Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
207ab3ec
Commit
207ab3ec
authored
Mar 09, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.4.x' into 1.5.x
parents
50c0204f
07c56c60
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
239 additions
and
49 deletions
+239
-49
HazelcastJCacheCustomizationConfiguration.java
...gure/cache/HazelcastJCacheCustomizationConfiguration.java
+82
-0
JCacheCacheConfiguration.java
...rk/boot/autoconfigure/cache/JCacheCacheConfiguration.java
+16
-9
JCachePropertiesCustomizer.java
.../boot/autoconfigure/cache/JCachePropertiesCustomizer.java
+40
-0
CacheAutoConfigurationTests.java
...boot/autoconfigure/cache/CacheAutoConfigurationTests.java
+95
-40
hazelcast.xml
spring-boot-autoconfigure/src/test/resources/hazelcast.xml
+2
-0
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+4
-0
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/HazelcastJCacheCustomizationConfiguration.java
0 → 100644
View file @
207ab3ec
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
autoconfigure
.
cache
;
import
java.io.IOException
;
import
java.net.URI
;
import
java.util.Properties
;
import
com.hazelcast.core.HazelcastInstance
;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.io.Resource
;
/**
* JCache customization for Hazelcast.
*
* @author Stephane Nicoll
*/
@Configuration
@ConditionalOnClass
(
HazelcastInstance
.
class
)
class
HazelcastJCacheCustomizationConfiguration
{
@Bean
public
HazelcastPropertiesCustomizer
hazelcastPropertiesCustomizer
(
ObjectProvider
<
HazelcastInstance
>
hazelcastInstance
)
{
return
new
HazelcastPropertiesCustomizer
(
hazelcastInstance
.
getIfUnique
());
}
private
static
class
HazelcastPropertiesCustomizer
implements
JCachePropertiesCustomizer
{
private
final
HazelcastInstance
hazelcastInstance
;
HazelcastPropertiesCustomizer
(
HazelcastInstance
hazelcastInstance
)
{
this
.
hazelcastInstance
=
hazelcastInstance
;
}
@Override
public
void
customize
(
CacheProperties
cacheProperties
,
Properties
properties
)
{
Resource
configLocation
=
cacheProperties
.
resolveConfigLocation
(
cacheProperties
.
getJcache
().
getConfig
());
if
(
configLocation
!=
null
)
{
// Hazelcast does not use the URI as a mean to specify a custom config.
properties
.
setProperty
(
"hazelcast.config.location"
,
toUri
(
configLocation
).
toString
());
}
else
if
(
this
.
hazelcastInstance
!=
null
)
{
properties
.
put
(
"hazelcast.instance.itself"
,
this
.
hazelcastInstance
);
}
}
private
static
URI
toUri
(
Resource
config
)
{
try
{
return
config
.
getURI
();
}
catch
(
IOException
ex
)
{
throw
new
IllegalArgumentException
(
"Could not get URI from "
+
config
,
ex
);
}
}
}
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/JCacheCacheConfiguration.java
View file @
207ab3ec
...
...
@@ -40,6 +40,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.annotation.AnnotationAwareOrderComparator
;
import
org.springframework.core.annotation.Order
;
...
...
@@ -59,6 +60,7 @@ import org.springframework.util.StringUtils;
@ConditionalOnMissingBean
(
org
.
springframework
.
cache
.
CacheManager
.
class
)
@Conditional
({
CacheCondition
.
class
,
JCacheCacheConfiguration
.
JCacheAvailableCondition
.
class
})
@Import
(
HazelcastJCacheCustomizationConfiguration
.
class
)
class
JCacheCacheConfiguration
{
private
final
CacheProperties
cacheProperties
;
...
...
@@ -69,14 +71,18 @@ class JCacheCacheConfiguration {
private
final
List
<
JCacheManagerCustomizer
>
cacheManagerCustomizers
;
private
final
List
<
JCachePropertiesCustomizer
>
cachePropertiesCustomizers
;
JCacheCacheConfiguration
(
CacheProperties
cacheProperties
,
CacheManagerCustomizers
customizers
,
ObjectProvider
<
javax
.
cache
.
configuration
.
Configuration
<?,
?>>
defaultCacheConfiguration
,
ObjectProvider
<
List
<
JCacheManagerCustomizer
>>
cacheManagerCustomizers
)
{
ObjectProvider
<
List
<
JCacheManagerCustomizer
>>
cacheManagerCustomizers
,
ObjectProvider
<
List
<
JCachePropertiesCustomizer
>>
cachePropertiesCustomizers
)
{
this
.
cacheProperties
=
cacheProperties
;
this
.
customizers
=
customizers
;
this
.
defaultCacheConfiguration
=
defaultCacheConfiguration
.
getIfAvailable
();
this
.
cacheManagerCustomizers
=
cacheManagerCustomizers
.
getIfAvailable
();
this
.
cachePropertiesCustomizers
=
cachePropertiesCustomizers
.
getIfAvailable
();
}
@Bean
...
...
@@ -102,14 +108,14 @@ class JCacheCacheConfiguration {
private
CacheManager
createCacheManager
()
throws
IOException
{
CachingProvider
cachingProvider
=
getCachingProvider
(
this
.
cacheProperties
.
getJcache
().
getProvider
());
Properties
properties
=
createCacheManagerProperties
();
Resource
configLocation
=
this
.
cacheProperties
.
resolveConfigLocation
(
this
.
cacheProperties
.
getJcache
().
getConfig
());
if
(
configLocation
!=
null
)
{
return
cachingProvider
.
getCacheManager
(
configLocation
.
getURI
(),
cachingProvider
.
getDefaultClassLoader
(),
createCacheManagerProperties
(
configLocation
));
cachingProvider
.
getDefaultClassLoader
(),
properties
);
}
return
cachingProvider
.
getCacheManager
();
return
cachingProvider
.
getCacheManager
(
null
,
null
,
properties
);
}
private
CachingProvider
getCachingProvider
(
String
cachingProviderFqn
)
{
...
...
@@ -119,12 +125,13 @@ class JCacheCacheConfiguration {
return
Caching
.
getCachingProvider
();
}
private
Properties
createCacheManagerProperties
(
Resource
configLocation
)
throws
IOException
{
private
Properties
createCacheManagerProperties
()
{
Properties
properties
=
new
Properties
();
// Hazelcast does not use the URI as a mean to specify a custom config.
properties
.
setProperty
(
"hazelcast.config.location"
,
configLocation
.
getURI
().
toString
());
if
(
this
.
cachePropertiesCustomizers
!=
null
)
{
for
(
JCachePropertiesCustomizer
customizer
:
this
.
cachePropertiesCustomizers
)
{
customizer
.
customize
(
this
.
cacheProperties
,
properties
);
}
}
return
properties
;
}
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache/JCachePropertiesCustomizer.java
0 → 100644
View file @
207ab3ec
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
autoconfigure
.
cache
;
import
java.util.Properties
;
import
javax.cache.CacheManager
;
import
javax.cache.spi.CachingProvider
;
/**
* Callback interface that can be implemented by beans wishing to customize the properties
* used by the {@link CachingProvider} to create the {@link CacheManager}.
*
* @author Stephane Nicoll
*/
interface
JCachePropertiesCustomizer
{
/**
* Customize the properties.
* @param cacheProperties the cache properties
* @param properties the current properties
* @see CachingProvider#getCacheManager(java.net.URI, ClassLoader, Properties)
*/
void
customize
(
CacheProperties
cacheProperties
,
Properties
properties
);
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cache/CacheAutoConfigurationTests.java
View file @
207ab3ec
This diff is collapsed.
Click to expand it.
spring-boot-autoconfigure/src/test/resources/hazelcast.xml
View file @
207ab3ec
...
...
@@ -3,6 +3,8 @@
xmlns=
"http://www.hazelcast.com/schema/config"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
>
<instance-name>
default-instance
</instance-name>
<map
name=
"defaultCache"
/>
<network>
...
...
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
207ab3ec
...
...
@@ -4128,6 +4128,10 @@ NOTE: Since a cache library may offer both a native implementation and JSR-107 s
Spring Boot will prefer the JSR-107 support so that the same features are available if
you switch to a different JSR-107 implementation.
TIP: Spring Boot has a <<boot-features-hazelcast,general support for Hazelcast>>t. If
a single `HazelcastInstance` is available, it is automatically reused for the
`CacheManager` as well unless the `spring.cache.jcache.config` property is specified.
There are several ways to customize the underlying `javax.cache.cacheManager`:
* Caches can be created on startup via the `spring.cache.cache-names` property. If a
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment