この種の状況は、実装がライブラリに分離されている場合により適切に処理できます。
与えられたファーストネーム、ラストネームのフルネームを作成するサービスの簡単な例を見てみましょう。
まず、このためのpojo実装を作成します
public interface NameService {
public String combineName(String firstName, String lastName);
}
public class NameServiceImpl implements NameService {
public String combineName(String firstName, String lastName) {
return firstName + " " + lastName;
}
}
上記のインターフェースと実装は、理想的には独自のパッケージとモジュールにある必要があります。たとえば、ビルドは、上記を含む myapp-service-lib.jar になるはずです。
上記のRest Serviceを作成しましょう。
public interface NameRestService {
public String combineName(String firstName, String lastName);
... //any other functions
}
@Path("/person/")
public class NameRestServiceImpl implements NameRestService {
@Autowired
private NameService nameService;
@GET
@Path("/name/combine")
public String combineName(@QueryParam("firstname") String firstName, @QueryParam("lastname") String lastName) {
return nameService.combineName(firstName, lastName);
}
...//other restful implementations
}
上記の 2 つのクラスは、理想的には独自のモジュールにある必要があります。たとえば、ビルドの結果は myapp-web-service.jar/war になります。このモジュールは、必要に応じて myapp-service-lib.jar およびその他のサービス ライブラリ jar を使用します。
上記の 2 つのモジュールを使用すると、使用モデルと展開モデルを柔軟に組み合わせることができます。Spring MVC アプリケーションで Restful サービスを使用せずにサービスを直接使用する場合は、Spring MVC アプリで myapp-service-lib.jar を使用するだけです。
Web サービスを個別にデプロイする場合は、手間をかけずに行うことができます。