스프링 공부 3일차

원래라면 매일 매일 공부해야 하지만... 야간알바에다가 코드스쿼드 코딩테스트까지 하다보니 피곤해서 공부를 띄엄띄엄 하게 된다.. 코드 스쿼드에 합격하면 아마 공부한 내용을 여기에다가 적을수도 있을것 같다.

 

스코프

 

빈을 싱글톤인지 프로토 타입인지 결정하는 타입(?) 이라고 하는 것.

 싱글톤

  빈을 @Autowired를 사용하면 자동으로 생성,등록이 되는데 그때 등록할때마다 하나의 빈을 사용한다는 것.

 

프로토 타입

위와 같지만 빈을 등록할때마다 서로 다른 빈을 생성한다. 

 

즉 하나만 쓸꺼냐, 각각 다른것을 쓸거냐의 차이. 기본적으로 모두 싱글톤으로 설정되어있다.

그리고 프로토타입의 경우 프록시가 감싸고 있어서 프록시를 통해 접근해야 하는데 그 이유는 프로토타입을 직접 참조하면 바꿀수가 없어서 그렇다고 한다. 프록시가 뭔지는 잘 모르겠지만 대략적으로 대신해서 접근해주는게 프록시가 아닐까라는 생각이 든다. 

 

프로토 타입 빈은 싱글톤타입빈을 참조할 수 있지만 싱글톤 타입빈이 프로토타입 빈을 참조 한다면 여러 오류가 생기니 따로 처리가 필요하다. 처리방법은 나중에 자세히. 

 

@Scope(value="singleton or prototype")로 사용한다.

 

 

ApplicationContext가 가지고 있는 기능들

 

Profile

빈들의 묶음. 환경이다. 테스트 환경에선 ~빈을 쓰겠다. 어떤 환경에선 ~빈들을 쓰겠다등, 각각의 환경에 따라 다른 빈들을 쓰는 경우등 요구사항을 충족시키기 위한 기능. Environment인터페이스를 이용해 사용 가능하다.

 

Environment

프로파일과 프로퍼티를 다루는 인터페이스

 

Profile 예제

@Configuration
@Profile("test")
public class TestConfiguration(){
@Bean BookRepository(){
	return new TestBookRepository();
    }
}

test라는 상황에서만 실행하라고 했다.

main에서 BookRepository를 자동으로 할당 하려해도 빈을 찾을수 없으므로 오류가 뜬다.

 

profile 설정

VM option에 -Dspring.profile.active="test"를 추가. 프로파일에 test가 추가 됬으므로 위 코드를 실행시키면 정상적으로 작동한다.

@Profile("!prod")로 설정시 prod가 아닐때 실행 시키므로 실행되고 있는 프로파일이 prod가 아닌이상 실행이 된다. !, &, | 를 사용할 수 있다.

 

property

application에 등록되어있는 keyvalue값을 접근할 수 있는 기능. 아직까지는 왜 쓰는지 모르겠다.

'Web > Spring Boot' 카테고리의 다른 글

ObjectMapper  (0) 2021.05.08
스프링부트 공부 5일차  (0) 2020.12.19
스프링 공부 4일차  (0) 2020.12.19
스프링부트 공부 2일차  (0) 2020.12.09
스프링부트 공부 1일차  (0) 2020.12.06