2017-09-07 59 views
0

스프링을 사용하여 나머지 웹 서비스를 구현했습니다. 모든 웹 서비스를 수행하기 전에 수행해야하는 공통 코드가 있습니다. 각 웹 서비스의 시작 부분에이 공통 코드를 명시 적으로 명시 적으로 호출합니다.스프링 웹 서비스를 실행하기 전에 코드를 실행하는 방법

웹 서비스를 호출하기 전에 스프링이 "자동으로"이 공통 코드를 호출하도록하는 방법이 있습니까?

+1

당신이 '웹 서비스를 호출하기 전에'정의 할 수에 대한 구글 검색? 어떤 구성 단계 (풀 초기화, 리소스 및 맵로드/준비, 참조 테이블 작성 등)를 의미합니까, 아니면 서비스에 대한 모든 호출 (인증, 감사 기록, 세션 초기화, 기타.)? – user2478398

+0

코드를 사용해 보셨습니까?! 더 명확한 시나리오를 게시 할 수 있습니까?! –

+0

요청 정보 (브라우저, IP 및 OS 버전)를 저장해야합니다. 이렇게하려면 httpRequest 개체에 액세스해야합니다. 대신 모든 webservice에서 수동으로 수행해야합니다. 이렇게하려면 봄에 지원되는 것이 있는지 묻습니다. –

답변

0

당신은 코드를 다음과 같은 모든 웹 서비스 스프링 AOP의 절편을 사용하고 it.Like에 공통 코드를 실행해야합니다

<bean id="aspect" class="com.zhuyiren.Aspect"/> 

<aop:config> 
    <aop:aspect ref="aspect"> 
     <aop:before method="before" pointcut="execution(* com.zhuyiren.service..*.*(..))"/> 
    </aop:aspect> 
</aop:config> 

코드가 호출을 com.zhuyiren.service에서 포장 일부 빈의 모든 방법을 의미한다 위에 항상 실행 그건 우선은 common method.Like에 공통의 코드를 작성할 수 있습니다 com.zhuyiren.Aspect의 방법 common :

public void common(){ 
    System.out.println("execute some common code"); 
} 

테스트 케이스 :

public static void main(String[] args) throws Exception { 
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("test.xml"); 
    UserService service = context.getBean(UserService.class); 
    System.out.println(service.getUser(3)); 
} 

인쇄는 : 당신은 그것을 확장하고 당신이 필요로하는 요청에서 정보를 추출 할 수 있습니다

execute some common code 
UserInfo{id=3, name='zhuyiren', password='123456', testString=[]} 
0

이 HandlerInterceptorAdapter 를 살펴 보자

최고의 대답은 코드에 따라

0

당신이 실행하기를 원합니다.

하나의 기술은 @ dabaicai 응답에 설명 된대로 AOP를 사용하는 것입니다.

요청 방법을 처리하기 전에 요청을 처리하기 위해 JEE 필터를 추가하는 방법이 다릅니다.

는 여기에 몇 가지 링크입니다 :

  • Oracle's Essentials of filters
  • Mkyong's Spring JEE filters
  • JEE6 Tutorial Filtering Requests and Responses
    1. - 에누리이 걸릴, Mkyong 빛이 설명에 있습니다.

    또 다른 옵션 : "봄의 JEE 필터"