DEVLOG

어노테이션을 이용한 스프링 설정 - 2 본문

Spring

어노테이션을 이용한 스프링 설정 - 2

BINTHEWORLD 2022. 6. 8. 12:07

Java 파일 분리

xml1.xml 2.xml 3.xml처럼 1.java 2.java 3.java로 분리하는 것을 의미한다.

소스가 길어지면 유지보수가 어려워지기 때문에 분리하는 것이 좋다. 일반적으로 기능별로 구분하여 분리하여 Dao 및 Service객체 / DB관련기능들 / Util들로 분리한다.

 

DB관련과 유틸관련으로 분리된 config 파일이 있다고 가정해보자.

	@Bean
	public DataBaseConnectionInfo dataBaseConnectionInfoDev() {
		DataBaseConnectionInfo infoDev = new DataBaseConnectionInfo();
		infoDev.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
		infoDev.setUserId("scott");
		infoDev.setUserPw("tiger");
		
		return infoDev;
	}
	
	@Bean
	public DataBaseConnectionInfo dataBaseConnectionInfoReal() {
		DataBaseConnectionInfo infoReal = new DataBaseConnectionInfo();
		infoReal.setJdbcUrl("jdbc:oracle:thin:@192.168.0.1:1521:xe");
		infoReal.setUserId("masterid");
		infoReal.setUserPw("masterpw");
		
		return infoReal;
	}

아래 유틸관련 config 파일의 코드를 보면 dataBaseConnectionInfoDev 객체와 dataBaseConnectionInfoReal 객체가 필요하므로 Config 파일의 분리 목적을 잃지 않기 위해 @Autowired 어노테이션으로 동일한 데이터타입의 객체를 찾고, 그 중 객체명과 동일한 빈(Bean) 객체의 메소드명을 가진 메소드의 리턴되는 객체자동주입한다.

	Map<String, DataBaseConnectionInfo> dbInfos = new HashMap<String, DataBaseConnectionInfo>();
	dbInfos.put("dev", dataBaseConnectionInfoDev); // 기존 dataBaseConnectionInfoDev() 대신 프로퍼티의 레퍼런스만 적어주면 자동주입한 것을 쓰겠다는 의미
	dbInfos.put("real", dataBaseConnectionInfoReal); // 기존 dataBaseConnectionInfoReal() 대신 프로퍼티의 레퍼런스만 적어주면 자동주입한 것을 쓰겠다는 의미
	info.setDbInfos(dbInfos);
	// 지동주입
   	@Autowired
	DataBaseConnectionInfo dataBaseConnectionInfoDev; 
	
	@Autowired
	DataBaseConnectionInfo dataBaseConnectionInfoReal;

MainClass

  • 분리된 세 개의 스프링 설정파일을 ','로 가져와 한 개의 스프링 컨테이너를 생성한다.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MemberConfig1.class, MemberConfig2.class, MemberConfig3.class);

@import 어노테이션

메인클래스에서 스프링 컨테이너 생성시 간단하게 하기 위함이다.

 

만약 DAO와 Service 관련으로 분리된 config 파일에서 나머지 config 파일을 @Import({}) 어노테이션 사용으로 임포트할 경우, 이외 config 파일들에는 @Import 어노테이션 주지 않아도 된다.

@Configuration
//MainClassUseConfigrationImport.java에서 스프링 컨테이너 만들 때 import 어노테이션 사용하면 간결하게 생성 가능
@Import({MemberConfig2.class, MemberConfig3.class}) 
public class MemberConfig1 {
    ...
}

MainClass 

  • @import 어노테이션 사용했으므로 아래 코드로 스프링 컨테이너 생성
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MemberConfig1.class);

 

출처

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC_renew 

 

자바 스프링 프레임워크(renew ver.) - 신입 프로그래머를 위한 강좌 - 인프런 | 강의

스프링 프레임워크 기본부터 실전 사용법까지! 충실하고 폭넓은 설명과 예제를 통해 현장에 바로 투입되어 활약하는 개발자로 거듭나세요., - 강의 소개 | 인프런...

www.inflearn.com

'Spring' 카테고리의 다른 글

웹 서버(Tomcat)와 이클립스 연동  (0) 2022.06.09
웹 프로그래밍 설계 모델  (0) 2022.06.08
어노테이션을 이용한 스프링 설정 - 1  (0) 2022.06.08
생명주기(Life Cycle)  (0) 2022.06.07
의존객체 선택  (0) 2022.06.07
Comments