inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 핵심 원리 - 기본편

탐색 위치와 기본 스캔 대상

@SpringBootApplication에 ComponetScan이 있다면 특별한 경우가 아니면 ComponentScan을 쓸 필요가 없나요?

해결된 질문

270

blashi

작성한 질문수 2

1

안녕하세요 김영한 선생님! 강의 정말 잘 듣고 있습니다.

이번 강의를 듣다가 몇가지 의문점이 생겨서 질문드립니다^^

1. @SpringBootApplication 에 대한 강사님의 설명을 듣고보니, @ComponentScan이 @SpringBootApplication에 있으니 굳이 따로 해줘야하나 하는 생각이 들었습니다. filter를 이용해야 하는 경우와 같이 특별한 경우가 아닐 경우에는 굳이 다른 클래스에서 @ComponentScan을 사용할 필요는 없는 건가요?

2. 기존에 Configuration을 담당하던 클래스에 들어갔던 정보들이 이제는 스프링을 통해서 관리가 돼는 것을 이해했습니다. 여기까지만 봤을땐 Configuration을 담당하는 클래스는 이제 없어져도 무방한 것 같다는 생각이 들어서요. 근데 실제로 그럴 거 같지는 않아서 Configuration을 담당하는 클래스에는 어떤 정보들이 추가로 들어가나요?

spring oop

답변 1

1

OMG

안녕하세요. 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

blashi

명확한 설명 감사드립니다!! 

SingletonService가 JVM이 뜰 때 생성되는게 맞나요?

0

29

1

섹션3. 11 회원객체 다이어그램

0

36

1

OCP, DIP과 @Qualifier 어노테이션에 대해서 질문합니다.

0

36

1

코드 자료

0

81

2

구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?

0

82

2

MemberService의 인터페이스를 왜 사용하는지 궁금합니다.

0

98

1

롬복 @Setter를 써야 하는 상황이 있는건가요?

0

104

1

빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?

0

88

1

테스트 속도가 나중에 영향이 있을까요?

0

91

1

gradle 설정 안떠서 질문 남깁니다!

0

141

2

build.gradle로 프로젝트를 여는 이유

0

100

1

provider 사용하는 이유

0

97

1

다음 강의 뭘 들어야 할까요

0

139

2

프로토타입 빈, 직접 destroy 호출 안 할 경우

0

70

1

beanB

0

91

2

퀴즈다시풀기

0

76

1

Gradle로 바꿔도 오류가 똑같이 발생하네요 ㅠㅠ

0

102

2

"중복 등록과 충돌" 강의에서 강사님과 다른 에러가 발생합니다.

0

71

3

run 실행했는데 결과창이 이렇게 뜨네요 왜 그런건가요>

0

113

2

도메인의 정의?

0

63

1

ApplicationContext 질문입니다.

0

68

1

@Scope의 proxyMode를 사용할때 단위 테스트 방법

0

98

2

ai api 선정하기 관련 질문

0

136

2

생성자 자동주입 관련해서

0

70

1