자바 에서 spring 에서 프로필 을 읽 는 몇 가지 방법 예제

6968 단어 spring자바
Spring 설정 XML 파일 읽 기 3 단계:
1.자바 빈 새로 만 들 기:

package springdemo;

public class HelloBean {
  private String helloWorld;
  public String getHelloWorld() {
    return helloWorld;
  }
  public void setHelloWorld(String helloWorld) {
    this.helloWorld = helloWorld;
  }
}
2.프로필 구축 beanconfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
  <bean id="helloBean" class="springdemo.HelloBean">
    <property name="helloWorld">
      <value>Hello!chb!</value>
    </property>
  </bean>
</beans>
3.프로필 읽 기:
1.ClassPathXmlApplication Context 이용:

ApplicationContext context = new ClassPathXmlApplicationContext("bean_config.xml");
//        ,     。
 HelloBean helloBean = (HelloBean)context.getBean("helloBean");
 System.out.println(helloBean.getHelloWorld());
ClassPathXmlApplication Context 는 인터페이스 Application Context,Application Context 는 BeanFactory 를 실현 했다.jdom 을 통 해 XML 프로필 을 읽 고 실례 화 된 Bean 을 구축 하여 용기 에 넣 습 니 다.

public interface BeanFactory {
  public Object getBean(String id);
}

//   ClassPathXmlApplicationContext
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class ClassPathXmlApplicationContext implements BeanFactory {
  
  private Map<String , Object> beans = new HashMap<String, Object>();
  
  //(IOC:Inverse of Control/DI:Dependency Injection)
  public ClassPathXmlApplicationContext() throws Exception {
    SAXBuilder sb=new SAXBuilder();
    
    Document doc=sb.build(this.getClass().getClassLoader().getResourceAsStream("beans.xml")); //      
    Element root=doc.getRootElement(); //     HD
    List list=root.getChildren("bean");//    disk     
    for(int i=0;i<list.size();i++){
      Element element=(Element)list.get(i);
      String id=element.getAttributeValue("id");
      String clazz=element.getAttributeValue("class");
      Object o = Class.forName(clazz).newInstance();
      System.out.println(id);
      System.out.println(clazz);
      beans.put(id, o);
      
      for(Element propertyElement : (List<Element>)element.getChildren("property")) {
        String name = propertyElement.getAttributeValue("name"); //userDAO
        String bean = propertyElement.getAttributeValue("bean"); //u
        Object beanObject = beans.get(bean);//UserDAOImpl instance
        
        String methodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
        System.out.println("method name = " + methodName);
        
        Method m = o.getClass().getMethod(methodName, beanObject.getClass().getInterfaces()[0]);
        m.invoke(o, beanObject);
      }     
    }    
  }

  public Object getBean(String id) {
    return beans.get(id);
  }
}

BeanFactory 는 매우 뿌리 있 는 인터페이스 입 니 다.Application Context 와 ClassPathXmlApplication Context 는 모두 인터페이스 BeanFactory 를 실현 하기 때문에 이렇게 쓸 수 있 습 니 다.

ApplicationContext context = new ClassPathXmlApplicationContext("bean_config.xml");
HelloBean helloBean = (HelloBean)context.getBean("helloBean");

BeanFactory factory= new ClassPathXmlApplicationContext("bean_config.xml");
HelloBean helloBean = (HelloBean)factory.getBean("helloBean");
ClassPathXmlApplication Context 등급 관 계 는 다음 과 같 습 니 다.

2.FileSystem 리 소스 로 읽 기

Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/bean_config.xml");
BeanFactory factory = new XmlBeanFactory(rs);
HelloBean helloBean = (HelloBean)factory.getBean("helloBean");
System.out.println(helloBean.getHelloWorld());
메모:FileSystem Resource 를 이용 하면 프로필 을 procject 직접 디 렉 터 리 에 두 거나 절대 경 로 를 써 야 합 니 다.그렇지 않 으 면 파일 을 찾 을 수 없 는 이상 을 던 집 니 다.
 Spring 속성 프로필 읽 기
두 가지 기술 을 소개 합 니 다:spring 을 이용 하여 properties 파일 을 읽 고 자바 util.Properties 를 이용 하여 읽 습 니 다.
1.spring 을 이용 하여 properties 파일 읽 기
위 에 있 는 HelloBean.java 파일 을 이용 하여 다음 과 같이 구 조 를 구성 합 니 다 beanconfig.properties 파일:

helloBean.class=springdemo.HelloBean
helloBean.helloWorld=Hello!HelloWorld!
속성 파일 의"helloBean"이름 은 Bean 의 별명 설정 입 니 다.class 는 클래스 원본 을 지정 하 는 데 사 용 됩 니 다.
그리고 org.spring from work.beans.factory.support.Properties Bean DefinitionReader 를 이용 하여 속성 파일 을 읽 습 니 다.

BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new ClassPathResource("bean_config.properties"));
BeanFactory factory = (BeanFactory)reg;
HelloBean helloBean = (HelloBean)factory.getBean("helloBean");
System.out.println(helloBean.getHelloWorld());
2.java.util.Properties 를 이용 하여 속성 파일 읽 기
예 를 들 어,우 리 는 ip 를 만 듭 니 다.config.properties 는 서버 ip 주소 와 포트 를 저장 합 니 다.예 를 들 어:
ip=192.168.0.1
port=8080
저 희 는 다음 프로그램 으로 서버 설정 정 보 를 얻 을 수 있 습 니 다.

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ip_config.properties");
Properties p = new Properties();
try {
  p.load(inputStream);
} catch (IOException e1) {
  e1.printStackTrace();
}
System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));
3.인터페이스 류 WebApplication Context 로 가 져 옵 니 다.

private WebApplicationContext wac;
wac =WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
wac = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
JdbcTemplate jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate");
그 중에서 jdbcTemplate 는 spring 설정 파일 의 bean id 값 입 니 다.
이러한 용법 은 비교적 유연 합 니 다.spring 프로필 은 웹 에서 시작 을 설정 하면 해당 하 는 bean 을 자동 으로 찾 습 니 다.설정 파일 의 구체 적 인 위 치 를 지정 하지 않 아 도 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기