2015-01-19 4 views
1

봄에는 클래스를 @Configuration으로 표시하고 빈을 구성하는 데 사용할 수 있습니다.`@ Configuration` 빈을 정상 빈으로 사용하는 것이 좋은 습관입니까?

하지만 콩은 또한 예를 참조, 일반 콩으로 사용할 수 있습니다

@Configuration 
@EnableCaching 
public class CacheConfig { 
    private List<GuavaCache> caches = Collections.emptyList(); 

    @Bean 
    public CacheManager cacheManager() { 
     SimpleCacheManager cacheManager = new SimpleCacheManager(); 
     cacheManager.setCaches(caches); 

     return cacheManager; 
    } 

    public String statistics() { 
     StringBuilder sb = new StringBuilder(); 
     for (GuavaCache cache : caches) { 
      sb.append(cache.statistics()).append("\n"); 
     } 
     return sb.toString(); 
    } 

} 

당신은 우리가이 CacheConfigCacheManager 빈을 구성 볼 수 있습니다뿐만 아니라 일반 statistics 방법을 포함하는 우리가 할 수있는 이 Bean을 참조하고 호출하십시오.

@Configuration 클래스를 사용하는 것이 좋습니다.

"bean 만들기", "비즈니스 로직 제공"이라는 두 가지 책임을 개인적으로 섞어서 개인적으로는 피할 수 있습니다. 나는 통계 용으로 다른 bean을 만드는 것을 선호한다.

@Configuration 
@EnableCaching 
public class CacheConfig { 
    private List<GuavaCache> caches = Collections.emptyList(); 

    @Bean 
    public CacheManager cacheManager() { 
     SimpleCacheManager cacheManager = new SimpleCacheManager(); 
     cacheManager.setCaches(caches); 
     return cacheManager; 
    } 

    @Bean 
    public CacheStatistics cacheStatistics() { 
     return new CacheStatistics(caches); 
    } 

} 

class CacheStatistics { 
    private List<GuavaCache> caches; 
    public CacheStatistics(List<GuavaCache> caches) { 
     this.caches = caches; 
    } 
    public String statistics() { 
     StringBuilder sb = new StringBuilder(); 
     for (GuavaCache cache : caches) { 
      sb.append(cache.statistics()).append("\n"); 
     } 
     return sb.toString(); 
    } 
} 
+0

당신과 함께 동의합니다. 우려의 분리. –

+0

구성 통계를 찾지 않으므로 CacheConfig.statistics()는별로 의미가 없습니다. 따라서 관심사 분리에 +1 – Jukka

답변

0

은 기본적으로 우리가 비즈니스 로직을 넣어 사용되지 않습니다 봄에 볼 파일에 .xml 파일을 대체 할 @Configuration을 사용하는 우리는 @Configuration를 사용하는 경우

그래서 우리는 우리가 그것을 사용 돌볼 필요 콩 선언. 우리가 다른 것들을 잘 처리했다고 생각하지 않습니다.

덕분에, Himanshu