728x90

해당 문서는 아래의 강의를 정리 및 요약한 문서입니다.

자세한 사항은 강의를 참조하시기 바랍니다.

https://www.youtube.com/playlist?list=PLPvokKzUkaLeiLUDKpqRdP8jtLU8lLKgR

 

 

7. 생명주기

 - 객체를 만들때 생성자에 직접 넣을 수도 있지만, 별도로 load 메소드로 설정하는 방법도 존재

 - 생성자에 직접 넣을 경우는 생성과 동시에 설정이 되지만, load 메소드로 설정하면 refresh도 같이 해줘야 설정이 완료됨

 

 

- bean 객체의 생성주기에 따른 메소드를 만드는 방법은 2가지가 있는데,

1) bean class에 implements로 InitializingBean(초기화 과정)과 DisposableBean(소멸 과정)을 상속해서 구현하는 방법

2) @PostConstruct(초기화 과정), @PreDestroy(소멸과정) 에 해당하는 annotation을 이용하여 구현하는 방법이 있음. 

 

 

 

 

- Spring을 사용하게 되면, 컨테이너에서 생성한 객체를 바라본다. 즉, 의존하는 클래스에서 객체의 이름을 달리해서 여러개를 만들어도 같은 것이 되는 것. (화면상의 예제에서 student1과 student2는 다르다고 생각하지만, 스프링 기법으로 이미 객체를 생성놓고 바라보는 것이기 때문에 사실상 같은 객체인 것)

- scope를 지정하지 않았을시, 즉 default일경우 scope은 singleton이 됨

 

 

 

8. 외부파일을 이용한 설정

- Environment 객체

- property 프로퍼티 파일을 이용한 설정

- profile 프로파일 속성을 이용한 설정

 

 - Context 파일을 만듦

 - Environment 객체 안에 여러가지 정보가 있을 수 있음. (ex. DB ID, DB Paswword, IP 주소 등에 대한 설정값)

 - 이와 같은 값을 관리하기 위해, Environment 객체 안에 해당 정보가 있는 것이 아니라, property Sources에 위치함. 

 

 

 

 

Property 사용방법 또한 2가지 (xml파일 사용, java 파일 사용)이다.

(1) xml파일 사용의 경우

applicationCTX.xml에서

상위에 xmlns:context="http://www.springframework.org/schema/context"를 추가하고,

<context:property-placeholder location = "path1, path2"/>로 불러오는 외부파일에 대해 설정함

 

(매번 기억하기 힘들기 때문에, 하단 tab에 namespace로 가서 설정하면 쉬움)

 <value>에 ${해당데이터key} 방법으로 입력함

 

(2) java파일 사용의 경우

ApplicationConfig.java 에서

 

package com.javalec.ex;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

@Configuration
public class ApplicationConfig {


//@Value annotation을 사용하면 field에 바로 적용이 되기 때문에 따로 setter 설정을 하지 않아도 됨
	@Value("${admin.id}")
	private String adminId;
	@Value("${admin.pw}")
	private String adminPw;
	@Value("${sub_admin.id}")
	private String sub_adminId;
	@Value("${sub_admin.pw}")
	private String sub_adminPw;
	
	@Bean
	public static PropertySourcesPlaceholderConfigurer Properties() {
		PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
		
		Resource[] locations = new Resource[2];
		locations[0] = new ClassPathResource("admin.properties");
		locations[1] = new ClassPathResource("sub_admin.properties");
		configurer.setLocations(locations);
		
		return configurer;
	}
	
	@Bean
	public AdminConnection adminConfig() {
		AdminConnection adminConnection = new AdminConnection();
		adminConnection.setAdminId(adminId);
		adminConnection.setAdminPw(adminPw);
		adminConnection.setSub_adminId(sub_adminId);
		adminConnection.setSub_adminPw(sub_adminPw);
		return adminConnection;
	}
	
}

 

Profile 사용방법 또한 2가지 (xml파일 사용, java 파일 사용)이다.

이와 같은 설정이 필요한 이유는 실서버와 테스트서버로 각기 다른 환경을 간단하게 탈부착하듯 설정할 수 있게 하기 위해서임.

 

 

728x90

+ Recent posts