> Java > java지도 시간 > 본문

Spring이 객체를 생성하는 방법에 대한 자세한 설명

零下一度
풀어 주다: 2017-07-21 22:09:02
원래의
2295명이 탐색했습니다.

Spring 구성에 대한 자세한 내용은 Spring 프레임워크 구성에 대한 간략한 분석을 참조하세요. 테스트하기 전에 환경을 구성하고 관련 Jar 패키지를 가져와야 합니다. Spring에서 생성된 객체는 범위를 통해 지정되지 않는 한 기본적으로 싱글톤 모드입니다.

1. 생성자를 통해 객체를 만듭니다.

2.1 인수 없는 생성자 + setter 메서드를 사용하여 값 주입

객체를 생성하는 가장 기본적인 방법은 인수 없는 생성자만 있으면 됩니다(클래스에 생성자가 작성되지 않으며 기본적으로 생성자가 있는 것입니다) , 임의 생성자를 작성하는 경우 인수가 없는 기본 생성자는 자동으로 생성되지 않습니다!!) 및 필드의 setter 메서드입니다.

Person 클래스:

Spring이 객체를 생성하는 방법에 대한 자세한 설명
package com.mc.base.learn.spring.bean;public class Person {private String name;private Integer id;    public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public Integer getId() {return id;
    }public void setId(Integer id) {this.id = id;
    }

    @Overridepublic String toString() {return "Person [name=" + name + ", id=" + id + "]";
    }

}
로그인 후 복사
Spring이 객체를 생성하는 방법에 대한 자세한 설명

XML 구성:

Spring이 객체를 생성하는 방법에 대한 자세한 설명
<?xml  version="1.0" encoding="UTF-8"?><beans><bean><property></property><property></property></bean>    
</beans>
로그인 후 복사
Spring이 객체를 생성하는 방법에 대한 자세한 설명

핵심은 다음과 같습니다.

SpringContext는 매개변수 없는 구조를 사용합니다. 함수는 객체를 생성한 다음 setter 메서드를 사용하여 객체를 할당합니다. 따라서 매개변수 없는 생성자가 없으면 Spring 컨텍스트가 객체를 생성할 때 오류가 보고됩니다.

Spring이 객체를 생성하는 방법에 대한 자세한 설명
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'person' defined in class path resource [applicationContext.xml]: Instantiation of bean failed; 
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mc.base.learn.spring.bean.Person]: No default constructor found; 
nested exception is java.lang.NoSuchMethodException: com.mc.base.learn.spring.bean.Person.
로그인 후 복사
Spring이 객체를 생성하는 방법에 대한 자세한 설명

2.2 매개변수화된 생성자를 사용하여

Person 클래스를 직접 삽입합니다.

Spring이 객체를 생성하는 방법에 대한 자세한 설명XML 구성:
Spring이 객체를 생성하는 방법에 대한 자세한 설명
package com.mc.base.learn.spring.bean;public class Person {private String name;private Integer id;    public Person(String name, Integer id) {super();this.name = name;this.id = id;
    }public String getName() {return name;
    }public void setName(String name) {this.name = name;
    }public Integer getId() {return id;
    }public void setId(Integer id) {this.id = id;
    }

    @Overridepublic String toString() {return "Person [name=" + name + ", id=" + id + "]";
    }

}
로그인 후 복사

Spring이 객체를 생성하는 방법에 대한 자세한 설명 2. 정적 팩토리 메소드를 통해 객체를 생성합니다.
컨테이너가 로드되면 정적 팩토리 객체가 생성됩니다. Spring이 객체를 생성하는 방법에 대한 자세한 설명

<?xml  version="1.0" encoding="UTF-8"?><beans><bean><constructor-arg></constructor-arg><constructor-arg></constructor-arg></bean>    
</beans>
로그인 후 복사

Spring이 객체를 생성하는 방법에 대한 자세한 설명
package com.mc.base.learn.spring.factory;import com.mc.base.learn.spring.bean.Person;public class PersonStaticFactory {    public static Person createPerson(){return new Person();
    }    /** * 工厂方法带有参数如何处理?
     * @Title: createPerson 
     * @Description: TODO(这里用一句话描述这个方法的作用) 
     * @param  @param id
     * @param  @param name
     * @param  @return 
     * @return Person    返回类型 
     * @throws     */public static Person createPerson(Integer id,String name){return new Person(name,id);
    }
}
로그인 후 복사
테스트 방법은 다음과 같습니다. Spring이 객체를 생성하는 방법에 대한 자세한 설명
    <span   style="max-width:90%"><!--<span style="color: #008000;">静态的工厂方法核心是class+factory-method <span style="color: #008000;">--><span style="color: #0000ff;"><span style="color: #800000;"><span style="color: #ff0000;"><span style="color: #0000ff;"><span style="color: #ff0000;"><span style="color: #0000ff;"><span style="color: #ff0000;"><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #800000;"><span style="color: #0000ff;"><br>    <span style="color: #008000;"><span style="color: #008000;"><span style="color: #008000;"> <span style="color: #0000ff;">bean <span style="color: #ff0000;">id<span style="color: #0000ff;">="person"<span style="color: #ff0000;"> class<span style="color: #0000ff;">="com.mc.base.learn.spring.factory.PersonStaticFactory"<span style="color: #ff0000;"> factory-method<span style="color: #0000ff;">="createPerson"<span style="color: #0000ff;">><br><span style="color: #008000;"><!--<span style="color: #008000;">通过property方法向createPerson传递参数 <span style="color: #008000;">--></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br>        <property name="name" value="LiuChunfu"></property><br>        <property name="id" value="125"></property><br>    <br></span></span></span></span></span></span></span></span></span>
로그인 후 복사
3. 인스턴스 팩토리를 통해 객체를 생성합니다.
인스턴스 팩토리는 인스턴스를 통해 객체를 호출하지만 획득한 객체는 결국 단일 관심 모드입니다. 인스턴스 팩토리와 정적 팩토리에서 생성되는 객체는 모두 싱글톤 모드입니다. 둘의 차이점은 객체 생성 시 정적 팩토리가 생성되고, 메서드가 생성될 때 인스턴스 팩토리가 생성된다는 점입니다. 호출됩니다. Java 디자인 패턴의 싱글톤 패턴 디자인(Hungry Man 스타일과 Lazy Man 스타일)을 아는 독자는 여기서 정적 팩토리 패턴과 인스턴스 팩토리 패턴에 대한 경험이 있어야 합니다.

    @Testpublic void testName() throws Exception {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        Person person=ac.getBean("person3", Person.class);
        System.out.println(person);//Person [name=LiuChunfu, id=125]}
로그인 후 복사

Spring이 객체를 생성하는 방법에 대한 자세한 설명
package com.mc.base.learn.spring.factory;import com.mc.base.learn.spring.bean.Person;public class PersonFactory {public Person createInstance() {return new Person();
    }
}
로그인 후 복사
    <bean></bean><bean><property></property><property></property></bean>
로그인 후 복사
Spring이 객체를 생성하는 방법에 대한 자세한 설명 물론, 위의 객체 생성에서는 매개변수를 전달할 수 있으며 객체를 생성할 때 기본 매개변수를 전달하는 것 외에도 나중에 setter 메소드를 전달하십시오. 매개변수를 전달하십시오.

위 내용은 Spring이 객체를 생성하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!