빈에 대한 클래스에는 public 생성자가 없지만 private 클래스 만 사용할 수 있습니까? Bean 생성시이 개인 생성자가 호출됩니까? 감사합니다. .개인 생성자가있는 Java Spring bean
답변
예, 스프링은 개인 생성자를 호출 할 수 있습니다. 가시성에 관계없이 올바른 인수를 사용하여 생성자를 찾으면 리플렉션을 사용하여 액세스 가능한 생성자를 설정합니다.
문서에 대한 참조를 제공해 주시겠습니까? 생성자에는 매개 변수가 있고이 인수에 대한 xml 파일에 값이 할당됩니다. – user710818
당신은 bean이 특별히 private bean() {...}과 같은 것을 가지고 있다면 Spring이 그것을 호출 할 수 있다는 것을 의미합니까? 어떻게 그것이 가능한가, 그것은 "사적"의 전체 목적에 반하는 것이다. –
미안하지만, 아마도 인자가없는 생성자 일 뿐이에요. 나는 내 자신의 프로젝트에서 내가 알아 차린 것에 불과하다. 스프링 문서에서 어디에서든지 본 적이 없다고 말할 수는 없습니다. 그러나 이것은 인스턴스화를 담당하는 클래스의 javadoc입니다.http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/BeanUtils.html#instantiateClass(java.lang.reflect.Constructor,%20java.lang.Object .. .) –
일반적으로 이러한 bean에는 정적 팩토리 메소드가 있으며, spring에 해당 메소드를 지정하여 해당 bean의 인스턴스를 얻을 수 있습니다. 3.3.1.3 here.을 참조하십시오. 이것은 가시성 제한을 피하기보다는 Spring에서 권장하는 방법입니다.
이상한, 정적 메서드, 공용 생성자가 있지만 디버깅 할 때 - 개인 생성자가 호출됩니다! sun.reflect.NativeConstructorAccessorImpl – user710818
자세한 내용/코드가 없으면 더 이상 설명 할 수 없습니다! –
내가 틀렸다고 생각해. 특정 코드는 없습니다. 디버거에서는 표준 sun/spring 메소드 만 볼 수 있습니다. – user710818
당신은 항상 The IoC container: Instantiation using an instance factory method에서, 오히려 기본 생성자에 의존하지 않고 콩을 만들 공장 방법을 사용할 수 있습니다 : 이것은 당신이 당신의 콩에 대한 기본이 아닌 생성자를 사용할 수있는 장점이있다
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean>
<!-- the bean to be created via the factory bean -->
<bean id="exampleBean"
factory-bean="serviceLocator"
factory-method="createInstance"/>
하고, factory 메소드 빈에 대한 의존성도 주입 할 수있다.
흥미 롭지 만 공장을 찾을 수 없습니다. 다른 방법으로 존재할 수 있습니까? – user710818
@Matthew : 그는 혹독한 제 3 자 코드 주위에 Spring을 개조하고있는 것으로 보입니다. 지저분 해지는 것 같습니다. –
@Donal, 아니요. 나는 코멘트에서 그가 말한 것을 이해하지 못했습니다. –
예, 개인 생성자는 봄에 의해 호출됩니다. 내 코드를 고려 :
Bean 정의 파일 :
<bean id="message" class="com.aa.testp.Message">
<constructor-arg index="0" value="Hi Nice"/>
</bean>
Bean 클래스 :
package com.aa.testp;
public class Message {
private String message;
private Message(String msg) {
// You may add your log or print statements to check execution or invocation
message = msg;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void display() {
System.out.println(" Hi " + message);
}
}
위의 코드는 잘 작동합니다. 따라서 스프링은 private 생성자를 호출합니다.
- 1. 개인 생성자가있는 클래스를 인스턴스화하는 방법
- 2. hibernate - spring/bean 매핑 세트
- 3. Spring : Bean 생성 중 오류
- 4. Groovy Spring Bean 클래스 경로
- 5. 응용 프로그램 컨텍스트 (Spring)의 Java bean 정의
- 6. JNI가있는 Java bean?
- 7. Java Bean ArrayList
- 8. java bean injection
- 9. "Java Bean"이란 무엇입니까?
- 10. Java Spring NtlmProcessingFilter second controller
- 11. Spring : 두 개의 인수 설정기로 Bean 구성하기
- 12. SpEL을 사용하여 Spring bean 속성의 값을 업데이트하십시오.
- 13. Spring : Foo 타입의 모든 bean 참조
- 14. JMX를 사용하여 Spring @Bean 객체 내보내기
- 15. 개인 복사 생성자 및 할당 생성자가있는 객체를 사용하는 방법은 무엇입니까?
- 16. netbeans 6.1 Java bean 이벤트
- 17. Java 구성 빈으로 Spring HttpRemoting 클라이언트
- 18. 개인 생성자
- 19. Java Spring 의존성
- 20. java spring 및 ftl
- 21. Java Spring ThreadPoolExecutorFactoryBean
- 22. Java Spring JdbcTemplate
- 23. Java Spring remoting 옵션
- 24. Java Spring WebServiceTemplate HIERARCHY_REQUEST_ERR
- 25. Eclipse에서 Java Spring 확인
- 26. [java bean] hibernate Session이 자바 빈을 끊는가?
- 27. java bean \ android json 객체에 객체
- 28. '주문'엔티티 bean
- 29. 개인 생성자 및 상속 (Java)
- 30. C# : 생성자가있는 일반 유형?
시도해보고 결과를 게시하는 것은 어떻습니까? – dm3
어렵습니다. 나는 모든 출처를 가지고 있지 않습니다. – user710818