Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 빈
- github
- merge
- mysql
- Spring legacy Project
- springboot
- @transactional
- list
- 이클립스
- 인터페이스
- @Bean
- react
- 깃허브
- DI
- 어노테이션
- 상속
- java
- pom.xml
- 영속성 컨텍스트
- 자바
- 스프링 컨테이너
- 의존성주입
- Spring 개발환경 설정
- 객체
- 자동주입
- 스프링
- 리액트
- 트랜잭션
- JVM
- spring
Archives
- Today
- Total
DEVLOG
어노테이션을 이용한 스프링 설정 - 2 본문
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);
출처
자바 스프링 프레임워크(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