WIL

이노베이션캠프 3주차 WIL

yougeun 2022. 7. 10. 21:59
728x90

1. 주특기 입문+숙련 주차

주특기 입문 주차에서 개인 과제로 Spring으로 AWS와 MYSQL를 이용한 간단한 항해 블로그 프로젝트를 만들었고. 팀 과제로는 JPA, Controller, Repository, Service와 같은 기본 이론에 대한 것을 적었다. 주특기 입문 주차가 끝나고 금요일부터 주특기 숙련 주차가 시작되었다. 주특기 숙련 주차부터 주특기 입문 주차와 비교했을 때  난이도가 엄청 많이 상승된 느낌을 느꼈다. 이제까지 본 주특기 숙련 주차 강의에서는 Spring security를 활용한 회원가입. OAuth2를 이용한 카카오톡 로그인, Spring MVC, DI, IOC, 쿠키와 세션, JUnit을 이용한 테스트 등을 배웠다.

2.DI

DI란 스프링이 제공하는 의존관계 주입 기능으로 밑의 코드처럼 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입시켜주는 방식이다. DI를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. DI를 사용하는 이유로는 Repository1의 생성자가 변경되더라도 이미 생성한 객체를 재사용하기 때문에 Repository1을 사용하는 Service와 Controller의 코드는 변경되지 않기 때문에 사용된다.

public class Repository1 { ... }

// 객체 생성
Repository1 repository1 = new Repository1();
Class Service1 {
	private final Repository1 repitory1;

	// repository1 객체 사용
	public Service1(Repository1 repository1) {
		this.repository1 = repository1;
	}
}

// 객체 생성
Service1 service1 = new Service1(repository1);
Class Controller1 {
	private final Service1 service1;

	// service1 객체 사용
	public Controller1(Service1 service1) {
		this.service1 = service1;
	}
}

3.IoC

메서드나 객체의 호출 작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는 것을 의미한다. 의존성 객체를 생성할 때 스스로 만드는 것이 아니라 제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입한다.

4.Bean

스프링 컨테이너는 자바 객체의 생명 주기를 관리하고 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 이러한 스프링 컨테이너가 관리하는 자바 객체들을 Bean이라고 부른다.  Bean으로 등록하는 방법에는 ComponentScan , 직접 등록하는 방법이 있다. ComponentScan은 어노테이션인 @Component를 명시하여 Bean에 추가하는 방법이고 직접 자바로 구현하는 방법에는 Class에 @Configuration을 어노테이션으로 명시하고 @Bean을 사용하여 직접 자바로 추가하는 방법이 있다. 

728x90