@SpringBootApplication에 ComponetScan이 있다면 특별한 경우가 아니면 ComponentScan을 쓸 필요가 없나요?
안녕하세요 김영한 선생님! 강의 정말 잘 듣고 있습니다.
이번 강의를 듣다가 몇가지 의문점이 생겨서 질문드립니다^^
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);
}
}
수동으로 빈을 등록하거나, 재정의해서 설정을 개발자가 원하는대로 바꾸는 것이 주 목적이며
각 영역 혹은 기능(웹, 보안, 캐시) 별로 구분지어 작성하는 예시를 보여드렸습니다.
감사합니다.
퀴즈가 안열려요
0
22
1
회원 도메인 인터페이스 개발
0
52
1
빈 스코프 개념의 중요성
0
42
1
SingletonService가 JVM이 뜰 때 생성되는게 맞나요?
0
97
2
섹션3. 11 회원객체 다이어그램
0
47
1
OCP, DIP과 @Qualifier 어노테이션에 대해서 질문합니다.
0
45
1
코드 자료
0
96
2
구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?
0
96
2
MemberService의 인터페이스를 왜 사용하는지 궁금합니다.
0
116
1
롬복 @Setter를 써야 하는 상황이 있는건가요?
0
116
1
빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?
0
99
1
테스트 속도가 나중에 영향이 있을까요?
0
105
1
gradle 설정 안떠서 질문 남깁니다!
0
180
2
build.gradle로 프로젝트를 여는 이유
0
122
1
provider 사용하는 이유
0
121
1
다음 강의 뭘 들어야 할까요
0
152
2
프로토타입 빈, 직접 destroy 호출 안 할 경우
0
83
1
beanB
0
105
2
퀴즈다시풀기
0
87
1
Gradle로 바꿔도 오류가 똑같이 발생하네요 ㅠㅠ
0
131
2
"중복 등록과 충돌" 강의에서 강사님과 다른 에러가 발생합니다.
0
104
3
run 실행했는데 결과창이 이렇게 뜨네요 왜 그런건가요>
0
140
2
도메인의 정의?
0
74
1
ApplicationContext 질문입니다.
0
75
1





