복붙노트

[SPRING] Struts 2와 Spring 스트럿츠 생성 객체 처리 방법

SPRING

Struts 2와 Spring 스트럿츠 생성 객체 처리 방법

Struts 2와 스프링 프레임 작업 4 (https://struts.apache.org/docs/spring-plugin.html)를 사용하고 있습니다. Struts bean 생성에 대해 몇 가지 질문이 있습니다.

Spring에서 Struts를 사용할 때 Spring @Inject, @Value, @Resource를 Actions, Validators 및 Interceptors에 @Component (또는 @Named)로 주석없이 쉽게 사용할 수 있습니다. 이것은 struts가 생성 한 객체가 스프링 관리 빈일 것으로 보입니다.

applicationContext.getBeanDefinitionNames ()를 볼 때 액션, 유효성 검사기 또는 인터셉터를 찾을 수 없으므로 사실이 아닙니다.

그래서 Struts가 생성 한 객체가 스프링 관리 빈이 아니라면 왜 스프링 주석 (@Inject, @Value, ...)이 잘 작동 하는가?

기술적으로 새로운 객체를 생성하고 (Spring 시작 후) Spring에 전달하고 Spring이 설정하도록 할 수 있습니까? 방법?!

해결법

  1. ==============================

    1.Struts는 ObjectFactory를 사용하여 액션, 인터셉터, 유효성 검사기 등과 같은 객체를 만듭니다.

    Struts는 ObjectFactory를 사용하여 액션, 인터셉터, 유효성 검사기 등과 같은 객체를 만듭니다.

    Struts-Spring 플러그인은 자체 객체 팩토리를 등록합니다. StrutsSpringObjectFactory :

    거기에서 buildBean ()과 같은 Object를 구축하는 메소드를 오버라이드합니다.

    이제 구현을 보면, org.springframework.beans.factory.config.AutowireCapableBeanFactory # createBean () 메소드를 사용하고있다.

    이것은 일반적으로 clazz 인수의 새로운 인스턴스를 생성합니다.

    그런 다음 새로 생성 된 인스턴스는 org.springframework.beans.factory.config.AutowireCapableBeanFactory # autowireBeanProperties ()를 사용하여 autowiring을 위해 전달됩니다.

    그 후,이 사례는 주입을 위해 Guice에게 전달됩니다.

    이제 완전히 구워지고 돌아올 준비가되었습니다.

    bean이 Spring에 의해 관리되는 경우, 응용 프로그램 컨텍스트에서 getBean 메소드를 사용합니다. 그렇지 않으면 Bean이 Spring에 의해 관리되지 않는 경우 새 인스턴스가 항상 struts-spring 플러그인에 의해 작성됩니다.

  2. from https://stackoverflow.com/questions/39706221/struts-2-and-spring-how-struts-created-objects-handled by cc-by-sa and MIT license