Spring : 어노테이션을 사용한 스프링 설정
어노테이션을 사용한 스프링 설정
설정파일을 자바코드의 어노테이션을 이용해서 만드는 방법이다.
@Configuration
java코드를 xml파일과 같은 스프링 설정파일로 작용하게 해주는 어노테이션
@Bean
@Configuration을 사용한 클래스의 메소드가 Bean객체를 나타낸다는 의미로 사용하는 어노테이션
예제
일반 Bean객체 생성
// applicationContext.xml 에 Bean객체들이 선언되어 있다고 가정한다.
// MemberConfig.java
@Configuration // 클래스앞에 @Configuration 어노테이션을 붙여준다.
public class MemberConfig {
// <bean id="studentDao" class="ems.member.dao.StudentDao" ></bean>
@Bean // Bean 객체를 나타낸다
public StudentDao studentDao() {
return new StudentDao();
}
생성자를 이용한 Bean객체 생성
//<bean id="registerService" class="ems.member.service.StudentRegisterService">
// <constructor-arg ref="studentDao" ></constructor-arg>
//</bean>
@Bean
public StudentRegisterService registerService() {
return new StudentRegisterService(studentDao());
}
setter를 이용한 Bean객체 생성
//<bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo">
// <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
// <property name="userId" value="scott" />
// <property name="userPw" value="tiger" />
//</bean>
@Bean
public DataBaseConnectionInfo dataBaseConnectionInfoDev() {
DataBaseConnectionInfo infoDev = new DataBaseConnectionInfo();
infoDev.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
infoDev.setUserId("scott");
infoDev.setUserPw("tiger");
return infoDev;
}
list/map을 이용한 Bean객체 생성
//<bean id="informationService" class="ems.member.service.EMSInformationService">
// <list>
// <value>Cheney.</value>
// <value>Eloy.</value>
// <value>Jasper.</value>
// <value>Dillon.</value>
// <value>Kian.</value>
// </list>
// </property>
// <property name="administrators">
// <map>
// <entry>
// <key>
// <value>Cheney</value>
// </key>
// <value>cheney@springPjt.org</value>
// </entry>
// <entry>
// <key>
// <value>Jasper</value>
// </key>
// <value>jasper@springPjt.org</value>
// </entry>
// </map>
// </property>
//</bean>
@Bean
public EMSInformationService informationService() {
EMSInformationService info = new EMSInformationService();
ArrayList<String> developers = new ArrayList<String>();
developers.add("Cheney.");
developers.add("Eloy.");
developers.add("Jasper.");
developers.add("Dillon.");
developers.add("Kian.");
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;
}
}
main클래스에서 이 자바 파일을 사용하는 방법
// 기존에 사용하던 방법
//GenericXmlApplicationContext ctx =
// new GenericXmlApplicationContext("classpath:applicationContext.xml");
// @Configuration을 사용한 자바파일을 사용하는 방법 AnnotationConfigApplicationContext라는 클래스를 이용 (나머지 getBean을 이용해 객체를 가져오는 것은 동일)
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(MemberConfig.class);
Java 파일 분리
- Java파일도 xml 파일처럼 용도를 나눠 분리하면 좋다.
- MemberConfig를 용도를 분리해 MemberConfig1, MemberConfig2, MemberConfig3으로 나눴다고 가정
용도에 맞게 나눠 각각 불러주는 방법
// main클래스
// 기존에 MemberConfig.java만 넣는 것이 아니고 1,2,3 전부 넣어준다.
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(MemberConfig1.class, MemberConfig2.class, MemberConfig3.class);
나눈 파일들을 하나에 모아 하나만 불러주는 방법
// MemberConfigImport.java
// 1번 내용을 적어주고 MemberConfig2, MemberConfig3을 Import 해준다.
@Configuration
@Import({MemberConfig2.class, MemberConfig3.class})
public class MemberConfigImport {
// MemberConfig1 에 있는 내용
}
// main 클래스
AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(MemberConfigImportclass);
댓글남기기