- 백준 바닥장식 python
- 코딩테스트
- 프로그래머스 알고리즘 고득점 kit
- 알고리즘 문제
- 프로그래머스
- 스프링 기초
- 코테
- 프로그래머스 레벨1
- 장고
- Django
- 백준
- 프로그래머스 전화번호 목록 파이썬
- 스프링 초보
- 프로그래머스 고득점 kit
- 프로그래머스 전화번호 목록 python
- 코테 연습
- 백준 다이나믹프로그래밍
- 전화번호 목록 python
- 프로그래머스 레벨2
- programmers
- 알고리즘 공부
- Django 기초
- 장고 기초
- Spring 초보
- spring 기초
- dp 알고리즘
- 백준 dp
- 코딩테스트 연습
- 프로그래머스 level1
- 바닥장식 파이썬
- Today
- Total
일일구름 IT
[Spring] xml파일을 Java파일로 변환하기 (@Configration, @Bean, AnnotationConfigApplicationContext) 본문
[Spring] xml파일을 Java파일로 변환하기 (@Configration, @Bean, AnnotationConfigApplicationContext)
일구름 2023. 11. 30. 21:34xml 파일을 Java 파일로 변환하기
기존에는 스프링 컨테이너를 만들어주기 위해 xml 파일을 이용해서 객체를 생상하고 설정 및 주입을 해주었습니다.
이를 xml을 쓰지 않고 anotation을 이용해 xml 대신에 java 파일로 스프링 컨테이너를 만들 수 있습니다.
xml, java 파일 변환 코드 예제
// XML 파일
<bean id="studentDao" class="ems.member.dao.StudentDao"></bean>
<bean id="modifyService" class="ems.member.service.StudentRegisterService">
<constructor-arg ref="studentDao"></constructor-arg>
</bean>
//Java 파일
import org.springframework.context.annotation.Configuration;
@Configration
public class MemberConfig {
@Bean
public StudentDao studentDao() {
return new StudentDao();
}
@Bean
public StudentRegisterService registerService() {
return new StudentRegisterService(studentDao());
}
}
위와 같이 xml 파일을 java 파일로 변경하기 위해서는 @Configration 어노테이션을 이용합니다.
@Configration 어노테이션을 이용하기 위해서는 일단 org.springframework.context.annotation.Configuration를 import 해줍니다.
그리고 Bean 객체를 작성해주기 위해 @Bean 어노테이션을 작성한 후, xml 파일에서 class 이름은 java 파일에서 class 반환타입으로 id값은 class 이름으로 작성해주면 java에서도 Bean 객체를 생성할 수 있습니다.
만약 다른 bean 객체를 참조하는 경우 xml 파일에서는 constructor-arg 태그를 이용하지만 java에서는 return하는 객체를 생성할때 참조할 메소드를 인자로 넘겨주면 됩니다.
xml 파일의 property 태그를 변환하는 예제는 다음과 같다.
// XML 파일
<bean id="dataBaseInfoDev" class="ems.member.DatabaseInfoDev">
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="userId" value="scott"/>
<property name="userPw" value="tiger"/>
</bean>
// Java 파일
@Bean
public DataBaseInfo databaseInfoDev() {
DataBaseInfo InforDev = new DataBaseInfo();
inforDev.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
inforDev.setJdbcUserId("scott");
inforDev.setUserPw("tiger");
return inforDev;
}
xml 파일에서의 property 태그 대신에 객체를 만들어준 후에 setter 메소드를 호출해 value에 해당하는 값을 넣어준다.
다음은 property태그 안의 값이 map 또는 list일때의 경우이다.
// XML 파일
<bean id="infoService" class="ems.member.service.EMSInfoService">
<property name="developers">
<list>
<value>Cheney.</value>
<value>Eloy.</value>
<value>Jasper.</value>
</list>
</property>
<property name="administrators">
<map>
<entry>
<key>
<value>Cheny</value>
</key>
<value>cheney@springPjt.org</value>
</entry
<entry>
<key>
<value>Jasper</value>
</key>
<value>jasper@springPjt.org</value>
</entry>
</map>
</property>
</bean>
// Java 파일
@Bean
public EMSInfoService infoService() {
EMSInfoService info = new EMSInfoService();
ArrayLIst<Stirng> developers = new ArrayList<String>();
developers.add("Cheney.");
developers.add("Eloy.");
developers.add("Jasper.");
info.setDevelopers(developers);
Map<String, String> administrators = new HashMap<String, String>();
administrators.put("Cheney", "cheney@springPjt.org");
administrators.put("Jasper", "jasper@springPjt.org");
info.setAdministrators(administrators);
return info;
}
xml파일에서 property 태그로 전달하는 값이 list 타입일때 Java 파일에서는 ArrayList 타입의 변수를 만든후에 값을 넣고 setter 메소드를 이용하여 해당 ArrayList 타입의 변수를 넣어주는 것이다.
propoerty 전달 값이 map 타입일때도 마찬가지로 Map 타입의 변수를 만들고 데이터를 넣은 다음, setter 메소드를 이용하여 Map 타입의 변수를 넣어주면 된다.
그럼 이제 만들어진 java 파일을 Main.class 에서 사용하는 방법은 다음과 같다.
// XML 파일을 사용하는 경우
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
// Java 파일을 사용하는 경우
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MemberConfig.class);
Java 파일로 만들어진 스프링 컨테이너의 Bean 객체를 사용하는 경우엔 AnnotationConfigApplicationContext를 사용한다.
이때, XML 파일을 사용할때와 다르게 파일 경로가 아닌 class 명을 사용해준다.
'Spring' 카테고리의 다른 글
[Spring] 웹 프로그래밍 설계 모델 (0) | 2024.03.01 |
---|---|
[Spring] InitializingBean, DisposableBean, init-method, destroy-method (0) | 2023.11.28 |
[Spring] 생명주기 (Life Cycle) (2) | 2023.11.28 |
[Spring] 의존객체 선택 (@Qualifier, @Named) (0) | 2023.11.11 |
[Spring] 의존객체 자동 주입 (@Autowired, @Resource, @Inject) (0) | 2023.11.09 |