봄에는 클래스를 @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();
}
}
당신은 우리가이 CacheConfig
에 CacheManager
빈을 구성 볼 수 있습니다뿐만 아니라 일반 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();
}
}
당신과 함께 동의합니다. 우려의 분리. –
구성 통계를 찾지 않으므로 CacheConfig.statistics()는별로 의미가 없습니다. 따라서 관심사 분리에 +1 – Jukka