의 ApplicationContext 봄에서 콩을 얻을 수 있습니다 . 여기서 많은 게시물에서 getBean 메서드를 사용하여 applicationContext에서 singleton 또는 new 인스턴스를 가져 오지 말아야한다는 것을 읽었습니다. 그러나 나는 나의 경우를 위해 그것을 할 적절한 방법을 찾을 수 없습니다. @Resource를 사용했는데 작동하는 것처럼 보이지만 정적 필드는 지원하지 않습니다. Thanx올바른 방법은 내가 인스턴스를 생성하는 공장
답변
봄에 이것을 수행하는 방법은 많이 있지만 가장 확실한 방법은 JavaConfig을 사용하는 것입니다.
@Configuration
public class myFactory {
@Bean
public static getInstance() {
switch(someInt) {
case 1:
return new MySpringBean();
case 2:
return new MyOtherSpringBean();
}
}
}
한 가지 방법은 콩의 인스턴스를 (각각을 구현하는 팩토리 클래스를 생성하고 저장할 수 있습니다 : 당신이 사용할 수 JavaConfig 주석을 스프링을 사용하는 경우에 당신은 당신의 bean을 구성하고 애플리케이션 컨텍스트에 추가하려면 다음을 수행 할 수 지도에서 일부 키 아래 값으로 공통 인터페이스 MyBean
) (beans
) :
public class MyBeanFactory {
private Map<Integer, MyBean> beans;
public MyBean create(Integer which) {
if (which != null)
return beans.get(which);
else
throw new IllegalArgumentException("Unknown bean");
}
public void setBeans(Map<Integer, MyBean> beans) {
this.beans = beans;
}
}
당신의 봄에서 applicationContext.xml
이제 공장의를 빈을 작성하고 콩 설정 :
마지막으로 평소와 같이 빈 팩토리를 삽입하고 예를 들어 같은 인스턴스를 가져올 수 있습니다. 이 :
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/applicationContext.xml" })
public class MyBeanFactoryTest {
@Autowired
private MyBeanFactory myBeanFactory;
@Test
public void test() {
Assert.assertTrue(myBeanFactory.create(1) instanceof MyBeanA);
Assert.assertTrue(myBeanFactory.create(2) instanceof MyBeanB);
}
}
당신은 자신 공장있는 개체에 대한 org.springframework.beans.factory.FactoryBean
인터페이스를 구현합니다.
FactoryBean 인터페이스는 Spring IoC 컨테이너의 인스턴스화 로직에 대한 플러그 가능 지점이다. XML의 (잠재적 인) 대량의 XML과 대비되는 Java로 표현 된 복잡한 초기화 코드가있는 경우, 사용자 고유의 FactoryBean을 작성하고 해당 클래스 내에 복합 초기화를 작성한 후 사용자 정의 FactoryBean을 컨테이너에 연결할 수 있습니다.
Object getObject()
:이 factory가 생성하는 객체의 인스턴스를 반환의 FactoryBean 인터페이스는 세 가지 방법을 제공합니다. 이 팩토리가 싱글 톤 (singleton) 또는 프로토 타입 (prototype)을 반환하는지 여부에 따라 인스턴스를 공유 할 수 있습니다.
boolean isSingleton()
:이 FactoryBean이 싱글 톤을 반환하면 true를 반환하고 그렇지 않으면 false를 반환합니다.Class getObjectType()
는 : 유형이 사전
에 알려져 있지 않은 경우 Spring Docs
를 살펴 보자 방법 또는는 null으로 getObject()에 의해 반환되는 개체 유형을 반환- 1. "공장"방법이 올바른 패턴입니까?
- 2. 내가 로직 클래스의 인스턴스를 생성하는 주요 방법이
- 3. 모델의 인스턴스를 나열하고 동일한보기에서 인스턴스를 생성하는 양식을 갖는 방법은 무엇입니까?
- 4. 이 공장 방법은 내가 시도한 것을 위해 좋은 것입니까? 여기
- 5. 올바른 방법은, 내가 긴 기능이
- 6. 올바른 방법은 ... 내가 현재이 일을하고
- 7. 내가 이런 싱글 톤 클래스의 인스턴스를 생성하는 데 사용
- 8. 공장
- 9. 올바른 스키마를 생성하는 PHP SOAP
- 10. Windsor Container에서 동일한 유형의 여러 인스턴스를 등록하는 올바른 방법은 무엇입니까?
- 11. 저장소 패턴을 사용하여 개체의 새 인스턴스를 만드는 올바른 방법은 무엇입니까?
- 12. 새 인스턴스를 생성하는 대신 값을 변경합니다.
- 13. 올바른 방법은 내가 내 이해 정정 NSTreeController
- 14. Java에서 Generic 클래스의 인스턴스를 만드는 올바른 방법은 무엇입니까?
- 15. Delphi에서 자체의 인스턴스를 생성하는 클래스 함수
- 16. XML 인스턴스를 생성하는 WPF 응용 프로그램
- 17. MVC/EF 코드로 하위 오브젝트를 선택/생성하는 올바른 방법은 무엇입니까
- 18. 공장 소녀 - 나는 RSpec에와 공장 소녀를 사용하고
- 19. StructureMap을 사용하는 단순 공장
- 20. , 내가 올바른 문자가 여기에
- 21. 올바른 Json을 생성하는 객체 이니셜 라이저 구문
- 22. 파이썬과 공장
- 23. 올바른 방법은
- 24. 작업 공장 예외 처리
- 25. 는 오이 공장 소녀를 설정하고 내가 레일 3 공장 소녀 설정을 얻으려고 3
- 26. 의존성 주입 및 공장
- 27. Guice로 속성을 설정하는 올바른 방법은 무엇입니까?
- 28. 작업 공장 작업에 변수를 전달하는 방법은 무엇입니까?
- 29. 올바른 방법은
- 30. 는 공장/또는