[SPRING] Spring을 통해 Bean에 Google guava 캐시 빌더 주입
SPRINGSpring을 통해 Bean에 Google guava 캐시 빌더 주입
어떤 사용자가 Spring bean을 통해 의존성 빈에 Google 구아바의 CacheBuilder를 구성하고 삽입 할 수있는 좋은 스 니펫을 제공 할 수 있습니까?
일반화하기 위해, 빌더 패턴을 사용하여 객체를 생성하는 예제를 Spring에서 필요로한다.
해결법
-
==============================
1.factory-method 속성을 사용하여 Spring XML에서 임의의 메소드를 호출 할 수는 있지만 빌더 - 패턴 스타일 체인 콜에서는 거의 불가능하다는 것을 알게 될 것이다.
factory-method 속성을 사용하여 Spring XML에서 임의의 메소드를 호출 할 수는 있지만 빌더 - 패턴 스타일 체인 콜에서는 거의 불가능하다는 것을 알게 될 것이다.
대신, 이러한 복잡한 시나리오에 대해 FactoryBean 또는 Java 기반 컨테이너 구성을 사용하십시오. XML은 그렇게까지 당신을 얻지 못할 것입니다, 나는 두려워합니다.
-
==============================
2.다음 Guava 릴리스 (릴리스 12)에 CacheBuilderSpec을 추가하면 CacheBuilder.from (String spec) 정적 팩토리 메소드를 사용하여 xml로 CacheBuilder 빈을 생성 할 수 있습니다.
다음 Guava 릴리스 (릴리스 12)에 CacheBuilderSpec을 추가하면 CacheBuilder.from (String spec) 정적 팩토리 메소드를 사용하여 xml로 CacheBuilder 빈을 생성 할 수 있습니다.
다음과 같이 보입니다.
<bean id="legendaryCacheBuilder" class="com.google.common.cache.CacheBuilder" factory-method="from"> <constructor-arg value="maximumSize=42, expireAfterAccess=10m, expireAfterWrite=1h" /> </bean>
Spring의 PropertyPlaceholderConfigurer를 사용하여 구성 문자열을 .properties 파일로 외부화 할 수도 있습니다.
그때까지 Sean Patrick Floyd의 솔루션을 사용해야합니다 (또한 유형 안전성이 장점입니다).
-
==============================
3.또한 다른 캐시에 대해 다른 캐시 빌더에 관심이 없다면 캐시 관리자에서 캐시 스펙을 직접 사용할 수 있다고 덧붙이고 싶습니다.
또한 다른 캐시에 대해 다른 캐시 빌더에 관심이 없다면 캐시 관리자에서 캐시 스펙을 직접 사용할 수 있다고 덧붙이고 싶습니다.
캐쉬 관리 프로그램을 초기화 할 때 이름별로 캐시를 지정하지 않아도됩니다. 캐시에 대한 각각의 새 요청은 제공된 CacheBuilder를 기반으로 작성됩니다.이 경우 제공된 Cache Spec을 사용하여 해당 CacheBuilder를 작성합니다.
Spring XML은 매우 우아합니다.
<bean id="cacheManager" class="org.springframework.cache.guava.GuavaCacheManager"> <property name="cacheSpecification" value="maximumSize=300000,expireAfterWrite=10h" /> </bean>
또한 참고 : 응용 프로그램 config xml에 다음과 같은 내용을 포함하여 캐싱을 사용한다는 것을 잊지 마십시오.
<cache:annotation-driven/>
물론 다음을 정의해야합니다.
xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation="http://www.springframework.org/schema/cache classpath:org/springframework/cache/config/spring-cache-4.2.xsd"
이와 같이 간단한 작업을 수행하지 않고 여러 유스 케이스에 대해 여러 개의 CacheBuilder를 갖고 자한다면 자체 Factory Class와 Method를 생성하는 것이 좋습니다.
from https://stackoverflow.com/questions/10355571/injecting-google-guava-cache-builder-into-bean-via-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트를 사용하면서 동적 속성을 구성하는 방법은 무엇입니까? (0) | 2019.03.25 |
---|---|
[SPRING] Spring security3 "spring-security-2.0.xsd 스키마를 사용할 수 없습니다" (0) | 2019.03.25 |
[SPRING] 테스트 스위트를 실행하는 동안 예외가 발생하는 Ehcache 종료 (0) | 2019.03.25 |
[SPRING] Typesafe Config로 지원되는 Spring 환경 (0) | 2019.03.25 |
[SPRING] 필자는 FasterXML \ Jackson에서 부울 값을 Int로 serialize / De-serialize 할 수 있습니까? (0) | 2019.03.25 |