我建立彈簧引導後端REST API。使用彈簧啓動內部@Controllers提供搜索方法
實體:
@Entity
public class Club {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotNull
@Column(unique=true)
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
庫:
@RepositoryRestResource
public interface ClubRepository extends JpaRepository<Club, Long>, JpaSpecificationExecutor<Club> {
}
僅這一點就暴露了一個休息終點在http://host/clubs
,太好了。現在,我想允許網址中的一些參數用於搜索目的,所以我開始遵循http://www.baeldung.com/rest-api-search-language-spring-data-specifications的說明。
但他們最終創造出一個自定義的@Controller
傳遞請求參數:
@Controller
public class ClubController {
@Autowired
private ClubRepository repo;
@RequestMapping(method = RequestMethod.GET, value = "/clubs")
@ResponseBody
public List<Club> search(@RequestParam(value = "search") String search) {
/* ... */
return repo.findAll(spec);
}
}
所以你看,他們最終調用的存儲庫的findAll方法,只是路過他們建立基於該規範查詢參數。很簡單,但我真的很想不必爲每個域對象創建額外的控制器。換句話說,有提供這種搜索通過在存儲庫中直接註釋(例如)的@Entity
,或覆蓋方法(如findAll
方法)的特徵的方法嗎?
.... <3 you rock – Sebas
是的,我既不是工作!也許不贊成,應該是流程資源? –
沒有,我找到了,'的apt-Maven的插件:1.1.3:process'這不是一個標準的目標。 – Sebas