[Spring] xml 가져오기2(줄임 방식)
- Web/Spring
- 2020. 10. 22.
package com.day03.Ex01;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class AdminConnection implements InitializingBean, DisposableBean{
private String adminId;
private String adminPw;
private String sub_adminId;
private String sub_adminPw;
public String getAdminId() {
return adminId;
}
public void setAdminId(String adminId) {
this.adminId = adminId;
}
public String getAdminPw() {
return adminPw;
}
public void setAdminPw(String adminPw) {
this.adminPw = adminPw;
}
public String getSub_adminId() {
return sub_adminId;
}
public void setSub_adminId(String sub_adminId) {
this.sub_adminId = sub_adminId;
}
public String getSub_adminPw() {
return sub_adminPw;
}
public void setSub_adminPw(String sub_adminPw) {
this.sub_adminPw = sub_adminPw;
}
@Override
public void destroy() throws Exception {
// TODO Auto-generated method stub
}
@Override
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
}
}
필요한 객체는 이미 존재한 상태에서 외부의 xml 자료를 가져오는 방식을 이용하는 과정이다.
admin.id = abcde
admin.pw = 12345
admin.id1=superman
admin.pw1=1000
자료는 역시 외부의 자료 xml이 준비되어 있다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:property-placeholder
location="classpath:admin.properties, classpath:admin.properties2" />
<bean id="adminConnection" class="com.day03.Ex01.AdminConnection">
<property name="adminId">
<value>${admin.id}</value>
</property>
<property name="adminPw">
<value>${admin.pw}</value>
</property>
<property name="sub_adminId">
<value>${admin.id1}</value>
</property>
<property name="sub_adminPw">
<value>${admin.pw1}</value>
</property>
</bean>
</beans>
xml을 자꾸 사용하다보니 이제 이해하는 수준이 되었다.
context를 만들어주고, 외부의 자료를 location을 통해 지정을 한다.
그리고 el코드를 통해 그 값을 Value에 직접적으로 넣는다.
package com.day03.Ex01;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
AbstractApplicationContext ctx = new GenericXmlApplicationContext("AdminDay02Ex01.xml");
AdminConnection adminConnection = ctx.getBean("adminConnection", AdminConnection.class);
System.out.println(adminConnection.getAdminId());
System.out.println(adminConnection.getAdminPw());
System.out.println(adminConnection.getSub_adminId());
System.out.println(adminConnection.getAdminPw());
ctx.close();
}
}
그러면 그냥 xml을 가져오게 된다면 바로 사용 할 수 있는 환경이 된 것을 확인 할 수 있게 된다.
외부의 xml을 가져오기 위해서 하는 과정을 좀 더 심플하게 변경 되었다.
아래는 이제 java 방식이다.
package com.day03.Ex02;
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("${admin.id}")
private String adminId;
@Value("${admin.pw}")
private String adminPw;
@Value("${admin.id1}")
private String sub_adminId;
@Value("${admin.pw1}")
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("admin.properties2");
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;
}
}
어노테이션을 통해 내가 원하는 값을 모두 지정해놓았다.
이 방식은 그냥 식견을 넓힌다는 식으로 알아두면 좋고, 외운다면 더더욱 좋다.
위의 xml 방식이 싫다하면 어노테이션으로 작업하면 된다.
package com.day03.Ex02;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import com.day03.Ex02.ApplicationConfig;
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx
= new AnnotationConfigApplicationContext(ApplicationConfig.class);
AdminConnection adminConnection = ctx.getBean("adminConfig", AdminConnection.class);
System.out.println(adminConnection.getAdminId());
System.out.println(adminConnection.getAdminPw());
System.out.println(adminConnection.getSub_adminId());
System.out.println(adminConnection.getAdminPw());
ctx.close();
}
}
메인은 xml과 딱 한 줄의 차이가 났다.
AnnotationConfiApplicationContext라는 객체 사용만 알아두면 xml과 차이가 없다는 것을 확인할 수 있다.
반응형
'Web > Spring' 카테고리의 다른 글
[Spring] AOP 사용하기 (0) | 2020.10.22 |
---|---|
[Spring] AOP에 대해 알아보자 (0) | 2020.10.22 |
[Spring] 외부의 xml 자료를 가져오기 (0) | 2020.10.22 |
[Spring] xml 시작전, 시작후 동작하는 메소드 (0) | 2020.10.21 |
[Spring] Xml Java vs XML (0) | 2020.10.21 |