2012-03-13 3 views
1

Struts 2 및 Spring autowiring을 사용하고 있습니다. 현재 기본 전략은 by-name으로 설정되어 있지만 대개 구현 클래스를 하나만 사용할 수있는 경우 속성에서 자동 와이어 링을 사용합니다.특정 속성을 노출시키지 않고 Struts2 + 스프링 autowiring 작업을 수행합니다.

하나의 속성이 있지만 여러 구현 클래스가있는 작업 클래스에 연결하려면 속성을 설정할 수있는 Java bean을 만들어야합니다. 불행히도 이들이 (분명히) 사용되는 유일한 방법은 공용 getter/setter가 있고 요청시이를 형식 변환기에 노출시키는 것입니다. 즉, 클라이언트가 폼 필드 나 매개 변수로 요청에 이름을 추가하면 Struts는 그 값을 요청에 쓰려고 시도합니다.

제 질문은 실제로 보안상의 위험이 있거나 없을 수도있는 속성을 공개하지 않고 by-name autowiring을 사용할 수 있습니까? 아니면 XML을 사용하고 Action을 범위 프로토 타입을 가진 객체?

+0

'요청 시간에 유형 변환기'가 무슨 뜻인지 잘 모르겠다. –

+0

@UmeshAwasthi 나는 그것을 더 명확하게하려고 노력했다. – wds

+0

액션 클래스에 설정된 특정 매개 변수를 제외하도록 S2 param 인터셉터를 쉽게 알릴 수 있습니다. –

답변

0

필자는 실제로 ParametersInterceptor에 대한 설명서를 추적했으며 실제로 인터셉터에서 설정 한 매개 변수를 제한 할 수있는 세 가지 방법을 나열했습니다. (그것은 더 이상 가장 최근의 클래스 문서에 설명 된대로도 가능하게되지 않습니다 내가 원하지 무엇을) 모든 작업에 적용되는 전역 정규식 매개 변수 구성에 excludeParams 구성

  • .
  • 설정 excludeMethods (앞에서와 같이 전역 제외에 대해 선호되는 방법)
  • ParameterNameAware 구현은 내가 원했던 것과 가장 비슷합니다. 여기에서 사용되는 매개 변수를 허용 목록에 추가 할 수 있습니다.

결국 정상적인 스프링 구성에서 액션을 프로토 타입 객체로 정의하는 것이 가장 현명한 방법이었습니다. 어떤 매개 변수가 어떤 매개 변수를 관리 하는지를 결정하면 변경 될 때마다 매개 변수를 명시 적으로 흰색으로 나열해야하는 다른 장소를 의미합니다.

+0

내가하는 일을 잘 모르겠다.하지만 보호받는 사람과 사적인 사람을 연결할 수있다. 간단한 예제는 다음과 같습니다. http://struts2.myxwiki.org/xwiki/bin/view/Struts2/Adding+Spring+Dependancy+Injection+to+Struts2+Project이 경우 Test는 보호 된 멤버입니다. – Quaternion

+0

@Quaternion 주석 설정을 사용하고 있지 않습니다. 자동 autowiring에만 의존하려고 할 때, 공개 될 때만 주입합니다. 당신의 접근 방식을 사용한다면, 그것은 행동을 적절하게 범위를 매기 는가? – wds

관련 문제