자바 에서 spring 에서 프로필 을 읽 는 몇 가지 방법 예제
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 을 자동 으로 찾 습 니 다.설정 파일 의 구체 적 인 위 치 를 지정 하지 않 아 도 됩 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.