2017-05-10 6 views
0

私は電子メールの送信に使用されているSBサービスを持っています。私はそれを私の既存のアプリケーションで使いたいのですが、どうしたらいいですか?私は着信HttpRequestとHttpResponseを処理するコントローラを作成することを考えています。しかし、私の既存のアプリケーションがどのようにそれを呼び出すかについてはまだ考えられていません。私は、SBアプリケーションが他のアプリケーションとどのように独立して動作するかについて、いくつかの高レベルの概要も必要とします。 P.S.-電子メールサービス用のUIインターフェースはありませんので、一般的にコントローラのようにURLをマッピングすることはありません。ここでSpringブートで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)と統合して、マップするURLがないようにします。起動しているアプリケーションから何らかのHttpRequestを作成する必要があり、コントローラがそれを処理する必要があります。どうすればこれを達成できますか?

答えて

0

このサービスは既に実装されていますか?次に、選択したuriに対応する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のようになります。POST www.example.com/api/email – n00bst3r

+0

これは完全に意味があります。しかし、私は既存のアプリケーションからそれを呼び出す方法をまだ理解できません。 –

0

この問題についてはわかりません。私が正しいとすれば、あなたはあなたのアプリケーションから休憩サービスを呼び出す必要があります。このケースでは、SpringのRestTemplatelink

を使用することが非常に簡単で便利ですあなたが応答するためのいくつかの概要here