해결된 질문
작성
·
233
1
안녕하세요 김영한 선생님! 강의 정말 잘 듣고 있습니다.
이번 강의를 듣다가 몇가지 의문점이 생겨서 질문드립니다^^
1. @SpringBootApplication 에 대한 강사님의 설명을 듣고보니, @ComponentScan이 @SpringBootApplication에 있으니 굳이 따로 해줘야하나 하는 생각이 들었습니다. filter를 이용해야 하는 경우와 같이 특별한 경우가 아닐 경우에는 굳이 다른 클래스에서 @ComponentScan을 사용할 필요는 없는 건가요?
2. 기존에 Configuration을 담당하던 클래스에 들어갔던 정보들이 이제는 스프링을 통해서 관리가 돼는 것을 이해했습니다. 여기까지만 봤을땐 Configuration을 담당하는 클래스는 이제 없어져도 무방한 것 같다는 생각이 들어서요. 근데 실제로 그럴 거 같지는 않아서 Configuration을 담당하는 클래스에는 어떤 정보들이 추가로 들어가나요?
답변 1
1
안녕하세요. blashi님, 공식 서포터즈 OMG입니다.
1. 스프링부트가 기본으로 설정해 놓은 컴포넌트 스캔 위치를 바꾸실 필요 없이 디폴트 값으로 진행하시면 됩니다. 추후 필요에 의해 바꿔야 될 때가 있다면 그 때 고려하시면 됩니다.
2. 강의를 조금 더 수강하시면 자동, 수동의 올바른 실무 운영 기준 에서 설명해주시는데요,
설명은 위와 같으며 예시를 들면 다음과 같습니다.
-Security와 관련된 설정 파일
-> 상속받은 클래스의 메서드를 재정의합니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.mvcMatchers("/", "/login").permitAll()
.anyRequest().authenticated();
http.formLogin()
.loginPage("/login").permitAll();
http.logout()
.logoutSuccessUrl("/");
}
}
- Web과 관련된 설정 파일
figuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new StringToIntegerConverter());
}
}
- cache 관련 설정 파일
@Configuration(proxyBeanMethods = false)
@EnableCaching
class CacheConfiguration {
@Bean
public JCacheManagerCustomizer petclinicCacheConfigurationCustomizer() {
return cm -> {
cm.createCache("vets", cacheConfiguration());
};
}
private javax.cache.configuration.Configuration<Object, Object> cacheConfiguration() {
return new MutableConfiguration<>().setStatisticsEnabled(true);
}
}
수동으로 빈을 등록하거나, 재정의해서 설정을 개발자가 원하는대로 바꾸는 것이 주 목적이며
각 영역 혹은 기능(웹, 보안, 캐시) 별로 구분지어 작성하는 예시를 보여드렸습니다.
감사합니다.
명확한 설명 감사드립니다!!