[Spring] xml 가져오기2(줄임 방식)

    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과 차이가 없다는 것을 확인할 수 있다.

    반응형

    댓글

    Designed by JB FACTORY