如果將實現分離到一個庫中,可以更好地處理這些情況。
舉一個服務的簡單示例,該服務爲給定的名字,姓氏創建全名。
Fristly,創建此
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;
}
}
以上接口POJO實現和執行最好應在其自己的包和模塊。例如,構建應該導致包含上述內容的myapp-service-lib.jar。
現在讓我們爲上述創建一個Rest服務。
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
}
上面兩個類應該在它自己的模塊中。例如,構建應該導致myapp-web-service.jar/war。如果需要,該模塊將使用myapp-service-lib.jar和其他服務庫jar。
上述兩個模塊將爲您提供靈活的混合和匹配使用和部署模型。 如果您希望spring mvc應用程序直接使用服務而不使用Restful服務,那麼只需在spring mvc應用程序中使用myapp-service-lib.jar即可。
如果Web服務是單獨部署的,那麼可以毫無麻煩地完成。
非常感謝@Integrator的解釋。你能否澄清你的陳述 - '如果你想讓spring mvc應用程序直接使用服務而不使用Restful服務'。使用Spring MVC,您可以通過Spring Controller公開類似休息的界面。在那種情況下,需要調用另一個寧靜的服務? – user1140448
該聲明假定您正在使用來自其他項目的庫,而不一定是當前的spring mvc。 – techuser
好吧,明白了!謝謝 – user1140448