春天REST API我只是跟着這個教程 https://spring.io/guides/tutorials/react-and-spring-data-rest/與Web應用程序
而且這真的很有趣,但我想知道怎樣才能創建相同的應用程序,而無需使用彈簧啓動,我想它在Tomcat Web容器部署。
在癮我想也到上下文路徑添加到應用程序將在本地主機上運行:8080/APPNAME /應用程序和API將本地主機上運行:8080/APPNAME /網絡
謝謝!
春天REST API我只是跟着這個教程 https://spring.io/guides/tutorials/react-and-spring-data-rest/與Web應用程序
而且這真的很有趣,但我想知道怎樣才能創建相同的應用程序,而無需使用彈簧啓動,我想它在Tomcat Web容器部署。
在癮我想也到上下文路徑添加到應用程序將在本地主機上運行:8080/APPNAME /應用程序和API將本地主機上運行:8080/APPNAME /網絡
謝謝!
你行你的Spring MVC
@Configuration
@EnableWebMvc
public class WebConfig{
//
}
@EnableWebMvc註釋做了一些有益的事情 - 具體而言,在靜止的情況下,檢測到類路徑 並自動創建傑克遜和JAXB 2的存在並註冊默認的JSON和XML轉換器。
@Controller是RESTful API的整個Web層中的中心工件。對於這篇文章的目的,控制器造型簡單的REST資源 - 美孚:
@Controller
@RequestMapping(value = "/foos")
class FooController{
@Autowired
IFooService service;
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public List<Foo> findAll(){
return service.findAll();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
public Foo findOne(@PathVariable("id") Long id){
return RestPreconditions.checkFound(service.findOne(id));
}
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public Long create(@RequestBody Foo resource){
Preconditions.checkNotNull(resource);
return service.save(resource);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
public void update(@PathVariable("id") Long id, @RequestBody Foo resource){
Preconditions.checkNotNull(resource);
RestPreconditions.checkNotNull(service.findOne(resource.getId()));
//update logic
service.save(resource);
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.OK)
public void delete(@PathVariable("id") Long id){
service.delete(id);
}
}
的控制器實現非公開 - 這是因爲它並不需要的人。通常,控制器是依賴關係鏈中的最後一個 - 它接收來自Spring前端控制器(DispathcerServlet)的HTTP請求,並簡單地將它們轉發給服務層。如果沒有控制器必須通過直接引用被注入或操縱的用例,那麼我寧願不宣稱它是公開的。
請求映射很簡單 - 與任何控制器一樣,映射的實際值以及HTTP方法用於確定請求的目標方法。 @RequestBody將方法的參數綁定到HTTP請求的主體,而@ResponseBody對響應和返回類型也是如此。他們還確保使用正確的HTTP轉換器對資源進行編組和解組。內容協商將主要基於Accept頭來選擇使用哪一個活動轉換器,儘管其他HTTP頭也可用於確定表示。 這裏是有幫助tutorial
春數據 讓我們來看看IFooService
,它在我們的控制器用於基本curd operation
IFooService.java
public interface IFooService extends CrudRepository<Foo, Long> {
}
春數據保存我們的生活,春天的數據一個高級別的SpringSource項目,其目的是統一併簡化對不同類型的持久存儲(關係數據庫系統和NoSQL數據存儲)的訪問。
這裏IFooService
擴展了CrudRepository,我們將Foo作爲實體進行傳遞,將Long作爲泛型參數中的Foo id類型。 如果將在FooController
IFooService看到的是自動裝配和我們使用的有以下幾種方法:
的findAll,findOne,保存,刪除
我們不以IFooService
已經提供了這些方法的實現,實際上,這些方法來自CrudRepository
意思是凝乳操作正在處理的春季數據很省時間here是CrudRepository
doc也可以學到很多關於春季數據的信息here
這是非常好的實現,但我必須用這種方式編寫大量的樣板代碼。事實是,我想使用'CrudRepository
@LorenzoDeFrancesco yes CrudRepository是春季資料的一部分,我在回覆中更新了春季資料圖片中的服務部分,請看看 –
太棒了,我明白了! 但是如何控制器,是否可以在不寫控制器的情況下以標準方式公開我的服務? –
嘗試查看此https://docs.spring.io/docs/Spring-MVC-step-by-step/part1.html –
是否要將其部署到Tomcat容器中而不使用Spring引導?因爲如果問題只是在Tomcat中部署它,您還可以使用「spring-boot-maven-plugin」將Spring引導應用程序打包爲war而不是jar,並將其部署到Tomcat中,而不會出現任何問題。 –
好吧,也許這個問題有點不對,事實是我想用'CrudRepository'和'PagingAndSortingRepository '接口部署我的web應用程序後端,以加速我的開發並避免編碼大量的樣板文件碼。 前端將使用Reat + Weback + redux進行開發。 我也認爲春季啓動向我的應用程序添加了大量無用的代碼(一個Web容器實現),因爲它必須部署到容器中,不是嗎? –