inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

JWT(JSON Web Token) 개요

왜 @Configuration의 WebSecurity 클래스에서 생성자 주입을 하지 않나요?

319

고은우

작성한 질문수 3

0

@Configuration

@EnableWebSecurity

public class WebSecurity {

extends WebSecurityConfigurerAdapter {

private UserService userService;

private BCryptPasswordEncoder bCryptPasswordEncoder;

private Environment env;

 

public WebSecurity(Environment env, UserService userService, BCryptPasswordEncoder bCryptPasswordEncoder) {

this.env = env;

this.userService = userService;

this.bCryptPasswordEncoder = bCryptPasswordEncoder;

}
강의에서 보면 @Configuration으로 WebSecurity클래스가 설정되어있기에 userService, bCryptPasswordEncoder, environment 인스턴스가 준비되어 있다고합니다. 따라서 위의 코드와 같이 생성자주입을 하지않는데, 왜 @Configuration으로 설정되어 있으면 @Autowired로 주입을 받지 않아도 되는 걸까요?

spring-boot jpa 아키텍처 spring-cloud kafka msa rabbitmq

답변 1

0

Dowon Lee

안녕하세요, 이도원입니다.

스프링에서 의존성 주입(Dependency Injection)으로 생성자 주입(Constructor Injection)을 사용할 수 있습니다. 스프링 4.3 이후 부터는 하나의 생성자만 있을 경우 @Autowired 를 붙이이 않아도, 스프링 컨텍스트에서 자동으로 해당 생성자를 사용하여 의존성을 주입할 수 있습니다. (Core container refinements in Spring Framework 4.3)

@Configuration 어노테이션을 사용한 설정 클래스에서 @Bean을 정의하게 되면, 의존성을 주입 받는 생성자를 사용할 수 있습니다.

@Configration
public class AppConfig {
    @Bean
    public MyService myService(MyRepository myRepository) {
        return new MyService(myRepository);
    }
}
-----
@Service
public class MyService {
    private final MyRepository myRepository;
    
    @Autowired // Spring 4.3이후부터는 생략 가능
    public MyService(MyRepository myRepository) {
        this.myRepository = myRepository;
    }
}

혹시, 말씀하신 질문 내용과 다른 답변이었다면 다시 글 남겨주시기 바랍니다. 감사합니다.

0

sseyeonida

안녕하세요

이번 영상 1분 50초 즈음에 나온 질문 같은데요.

 

저는 이 부분을 들으면서 configuration에서 생성한 변수들은, 위에서 답변으로 말씀하신 생성자주입, 즉 autowired가 없어도 단일 생성자라면 DI가 자동으로 이뤄진다는 것 말고, 자동으로 완성시킨다는 말씀을 유추해보면 configuration은 스프링 빈 설정 정보로서 관련한 변수들을 미리 빈 주입을 받는다

 

라고 이해가 되더라고요.

 

하지만 configuration안에 변수를 선언한다해도 자동으로 스프링 빈 주입은 안되는 거죠?

말씀하신 것처럼 이 부분에서 Autowired가 없는 것은 단일 생성자 때문에 자동 주입이 되는 것이죠?

kafka 업데이트 강의 듣고 시포요

0

85

1

강의 교안

0

75

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

66

1

섹션 19 질문드립니다

0

53

1

강의 자료 업데이트

0

83

1

부하분산 강의 섹션

0

57

1

강의자료는 어디에서?

0

72

1

강의 자료는 어디서 다운 받을 수 있나요?

0

110

1

전체 사용자 조회시 오류

0

59

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

112

2

학습 방향

0

95

2

카프카 커넥터 사용 목적 문의

0

86

2

kafka 강의

0

108

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

117

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

90

2

Kafka Source Connect 버전 에러

0

85

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

96

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

56

1

강의 업데이트 계획이 궁금합니다.

0

113

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

163

2

어떤 것이 업데이트 된 건가요?

0

164

2