Programming/Java \ Spring

[인프런] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(스프링 빈과 의존관계)

출처 : 인프런 강의 중 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

28강 중 16강까지

 

 

스프링의 가장 큰 특징인 의존성 주입(DI)를 위해 스프링 빈을 등록하는 과정이 필요하다.

사실 국비지원과정을 들으면서 servlet-context.xml 이나 root-context.xml에서 <bean></bean>으로 업로드 경로를 설정한다던가 view파일의 경로를 지정한다든가 등등의 경로 설정의 의미로 사용된다는 것은 인지하고 있었지만,

따로 controller, service에서 어노테이션을 사용할때 각자의 역할때문이라고만 생각했었다. 그냥 필수불가결한 것이라고만..

하지만 이번 강의에서는 각각의 어노테이션 속에 @component 라는 어노테이션이 포함되어있어 스프링 빈으로 자동 등록되는 것이라고 알게되었다.

 

프로그램을 실행하면 스프링 컨테이너에서 등록된 스프링 빈을 찾아 리턴해주는 원리이기 때문에 스프링 빈의 등록은 필수적이다.

@Autowired(의존성주입에 필요한 어노테이션) 또한 연관된 객체를 스프링 컨테이너에서 찾아서 주입해주는 것이다.

(클래스 생성자가 1개만 있으면 @Autowired는 생략할수 있다)

 

<참고>

스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다)

따라서 같은 스프링 빈이면 모두 같은 인스턴스다. 설정으로 싱글톤이 아니게 설정할 수있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다

 

자바코드로 스프링빈 등록하기

@Configuration, 즉 환경설정 설정파일을 따로 만들어서 스프링 빈으로 사용될 객체들을 지정해주는 것이다.

 

어딜가든 xml은 뒷전으로 빠지는것 같다.

xml에 대해 잘 모르지만 데이터 전달방식은 json, 스프링 빈 등록은 어노테이션 또는 config 파일

 

의존성 주입 방식 중 필드로 주입하면 값을 변경하기 어렵고, setter 주입을 하면 어디서나 누구나 값 변경이 가능하고,

생성자 주입으로 하면 객체생성시에 주입되고 변경하지 않기 때문에 안정성을 위해 생성자 주입을 많이 사용한다고 한다