2017-05-10 1 views
0

이메일을 보내는 데 사용되는 SB 서비스가 있습니다. 기존 응용 프로그램에서이 기능을 사용하고 싶습니다. 어떻게 할 수 있습니까? 들어오는 HttpRequest 및 HttpResponse를 처리하는 컨트롤러를 만드는 방법을 생각 중입니다. 하지만 기존 응용 프로그램이 어떻게 호출 할 지에 대해서는 아직 생각조차하지 않습니다. SB 애플리케이션이 다른 애플리케이션과 어떻게 독립적으로 작동하는지에 대한 높은 수준의 개요가 필요합니다. P.S.- 전자 메일 서비스를위한 UI 인터페이스가 없으므로 일반적으로 컨트롤러 에서처럼 URL을 매핑하지 않을 것입니다.스프링 부트에서 Restful WebService를 호출하는 방법

public class EmailService { 
     public HashMap<String, String> sendMessage(String emailFrom, String[] emailToList, String subject, Context ctx) { 
    ...../*Business Logic*/ 
    } 
    } 

내가 이것을 테스트하려면이 이전과 같은 컨트롤러를 만들어 :

@RestController 
    public class CourseController { 

     @Autowired 
     private EmailService emailService; 
     @RequestMapping(value = "/sendEmail", method = RequestMethod.POST) 
    public void sendEmail() { 
    emailService.sendMessage("[email protected]","{[email protected]}", "testSubject",new Context); 
    } 

상황은 일부 비즈니스 데이터가

여기 내 샘플 이메일 서비스입니다. 매핑을 통해 내 양식을 게시하고 게시하는 jsp가 있습니다. 그것은 모두 잘 작동합니다.

하지만 지금은 기존 애플리케이션 (스트럿츠 1)과 통합하여 맵핑 할 URI가 없습니다. 호출 응용 프로그램에서 생성해야하는 HttpRequest가 있어야하며 내 컨트롤러가이를 처리해야합니다. 이것을 어떻게 할 수 있습니까?

답변

0

이미이 서비스가 구현 되었습니까? 그런 다음 원하는 URI를 mapps하는 RestController 클래스가 필요합니다. 이 수업에서는 이메일 전송 방법을 구현하는 서비스 클래스를 주입해야합니다. 이 클래스에 @Service 주석이 달고 있습니까? 코드를 보지 않고도 설명하기가 어렵습니다. 다음은 REST 인터페이스에 대한 예 :

@RestController 
@RequestMapping("/api/v1/email") 
public class RestClass { 

private EmailService emailService; 

@Autowired 
public RestClass(EmailService emailService){ 
    this.emailService = emailService; 
} 
@RequestMapping(method = RequestMethod.POST) 
public ResponseEntity<?> sendEmail(@RequestBody EmailDTO emailDTO){ 
      String emailAdress = emailDTO.getEmail(); 
      this.emailService.sendEmail(emailAdress); 
      return new ResponseEntity<>(HttpStatus.NO_CONTENT); 
} 
} 

그래서이 경우에는 emailService은 이메일을 보내는 방법을 가지고있는 클래스가 될 것입니다. 이 클래스는 @Service로 주석되어야합니다. 희망이 도움이됩니다. 여기

기존 클래스 :

@Service 
public class EmailService { 
    public HashMap<String, String> sendMessage(String emailFrom, String[] emailToList, String subject, Context ctx) { 
...../*Business Logic*/ 
} 

}

그리고 경우에 주입하면 @ComponentScan ({ "com.foo.dal와 응용 프로그램 클래스에 주석을이 작동하지 않습니다 합니다. ","com.foo.notification. "})이 패키지는 서비스 및 리소스 클래스의 패키지로 간단하게 대체하십시오.

+0

감사를 얻을 수 있습니다 ..하지만 내가 원하지 않는 것은 URI에 매핑하는 .. 내 컨트롤러를 호출 할 수 없습니까? 나는 아래에 나의 코드를 추가 할 것이다. –

+0

Http로 메소드를 호출하려면 URI가 필요합니다. HTTP 요청은 항상 POST, PUT, GET, DELETE 등의 HTTP 메소드와 URI를 가지므로 다음과 같이 표시됩니다. POST www.example.com/api/email – n00bst3r

+0

이는 나에게 완벽합니다. 하지만 여전히 기존 응용 프로그램에서 어떻게 호출 할 것인지 이해할 수 없습니다. –

0

잘 모르겠습니다. 귀하가 귀하의 신청서에서 휴식 서비스를 요청해야하는 것이 옳다면. 이 경우는 훨씬 더 쉽게 사용하기 편리 봄의 RestTemplatelink

당신은 응답에 대한 많은 일부 개요 here

관련 문제