Spring이 간단한 예제로 Java 객체를 관리하는 방법을 해체합니다.
먼저, 간단한 pojo를 정의하면 코드는 다음과 같습니다.
package com.jvk.ken.spring; public class demo {private string name; public demo () {name = "ike demo.";} public void printname () {system.out.println (name);} public void setname (String name) {this.name = name;}}해당 스프링 구성 파일은 다음과 같습니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : context = "http://www.springframework.org/schema/context"xsi : schemalocation = "http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sprdext- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd "> <id id ="demo "/beans>
간단한 테스트 코드는 다음과 같습니다.
package com.jvk.ken.spring;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;public class Test {public static void main(String[] args) throws Exception {testspring ();} private static void testspring ()는 예외를 {beanfactory bf = new xmlbeanFactory ( "ApplicationContext.xml"); 데모 콩 = (데모) bf.getbean ( "demo"); system.out.println (bean.getclass ());테스트 클래스를 실행하고 다음 정보를 출력하여 간단한 스프링 예제가 성공적으로 실행되었음을 나타냅니다.
2012-3-28 22:18:07 org.springframework.beans.beans.factory.xml.xml.xmlbeandefinitionreader loadbeandefinitions 정보 : 클래스 경로 리소스에서 XML Bean 정의로드 [ApplicationContext.xml] 클래스 com.jvk.ken.spring.demo demo.
짧은 Java 코드 및 XML 구성 파일에서 XMLBeanFactory가 XML 구성 파일을 읽어 Javabean을 조립하고 사용자가 GetBean 메소드를 호출 할 때 필요한 객체를 반환한다는 것을 알 수 있습니다. 동작을 모방하기 위해 간단한 멍청이를 정의합니다.
패키지 com.jvk.ken.spring; import java.util.hashmap; import java.util.map; public class myBeanFactory {// bean 맵의 정의를 저장합니다. beans.get (id) .newinstance ();} private String xmlfile; public mybeanfactory (String xmlfile)는 classNotFoundException {super (); this.xmlfile = xmlfile; init ();} private void init ()는 classNotFoundException {// XML의 초기화 및 구문 분석 XML의 실제 구문 분석이 여기에서 생략되고 System.out.println ( "구성 파일 :"+xmlfile = "; "com.jvk.ken.spring.demo"; class <?> loadclass = this.getClass (). getClassLoader (). loadClass (className); beans.put ( "demo", loadclass);}}테스트 코드는 다음과 같습니다.
package com.jvk.ken.spring; public class test {public static void main (string [] args)은 예외 {testnotspring ();} private static void testnotspring () 예외 {myBeanFactory bf = new myBeanFactory ( "ApplicationContext.xml"); bf.getBean ( "데모"); System.out.println (bean.getClass ()); bean.printname ();}}실행 후 다음 정보가 출력됩니다.
구성 파일 : ApplicationContext.xml 클래스 com.jvk.ken.spring.demo 데모입니다.
위의 짧은 코드는 스프링이 가장 간단한 Bean 공장 역할을하는 방법을 보여줍니다. 봄에 발생하는 일을 분석하기 위해 코드를 약간 아래로 조정하겠습니다. 먼저, 데모 클래스의 매개 변수가없는 구성 방법을 비공개로 변경하십시오.
private demo () {name = "나는 데모입니다."; }테스트 코드를 실행하여 스프링 테스트 결과에는 차이가 없다는 것이 밝혀졌지만 내 맞춤형 myBeanFactory는 다음 오류 메시지를보고했습니다.
스레드 예외 "main"java.lang.ilegalaccessexception : class com.jvk.ken.spring.mybeanFactory는 com.jvk.ken.spring.demo의 구성원에게 액세스 할 수 없습니다. java.lang.class.newinstance0 (class.java:349) at java.lang.class.newinstance (class.java:308)의 com.jvk.ken.spring.mybeanfactory.getbean (mybeanfactory.java:12) at com.jvk.ken.spring.test.testnotspring (test.java:25)의 com.jvk.ken.spring.test.main (test.java:9)
봄이 너무 마법 이니? 아니요, 내가 쓴 코드는 너무 간단하며 약간의 수정으로 직접 실행할 수 있습니다.
public object getbean (String id)은 예외를 던지고 {class class1 = beans.get (id); 생성자 declaredconstructor = class1.getDeclaredConstructor (); declaredconstructor.setAccessible (true); return declaredconstructor.newinstance (); }위의 것은 스프링 컨테이너가 관리하는 가장 순수한 Javabean입니다. Spring은 또한 Factory Bean이라는 다른 유형의 콩을 지원합니다. 예제는 천 단어보다 낫습니다. 코드를 참조하십시오.
package com.jvk.ken.spring;import org.springframework.beans.factory.FactoryBean;public class DemoFactory implements FactoryBean {@Override public Object getObject() throws Exception {return new Demo();}@Override public Class getObjectType() {return Demo.class;}@Override public Boolean isSingleton() {return 거짓;}}Demofactory 클래스를 추가 한 후 스프링 구성 파일을 동시에 수정하십시오.
<bean id = "데모" />
다른 코드는 수정되지 않았습니다. 테스트 코드를 실행 한 후 출력 결과는 이전과 정확히 동일합니다. com.jvk.ken.spring.spring.spring.s id with id with id가 구성되어 있지만 결과가 데모 인스턴스 인 이유는 무엇입니까? 스프링은 Demofactory가 Factorybean 인터페이스를 구현하는 특수 콩이라는 것을 감지하기 때문입니다. 결과를 반환하기 전에 getObject 메소드가 호출되므로 최종 결과는 데모 객체입니다. 물론, 우리가 실제로 공장 콩을 가져와야한다면, 우리는 이와 같이 bf.getbean ( "& demo")을 쓸 수 있습니다.
요약
위의 내용은 Spring 구현 Bean 객체 생성 코드에 대한 자세한 설명입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!