私は簡単なスプリングブートの安静時のアプリケーションを持っています。私はコントローラ層とリポジトリ層を持ちますが、サービス層はありません。Controller-layerには何が属し、Service-layerには何がありますか?
@RequestMapping(value = "users/{id}", method = RequestMethod.GET)
public Resource<UserResource> get(@PathVariable Long id) throws NotFoundException {
log.info("Invoked method: get with ID: " + id);
log.warn("Searching for user with ID " + id);
User user = userRepository.findOne(id);
if (user == null){
log.error("Unexpected error, User with ID " + id + " not found");
throw new NotFoundException("User with ID " + id + " not found");
}
log.info("User found. Sending request back. ID of user is " + id);
return new Resource<UserResource>(getUserResource(user));
}
私はService-Layerが存在しないため、私のコントローラーは私にとってビジネスロジックを実行します。今私はサービス層を実装したいと思います。私のコントローラーはどうしたらいいですか?
サービスレイヤー(今実装したい)はすべて作業を行い、コントローラーはサービスレイヤーに要求を委任するだけですか?
それほど長い前、私は大規模な自動車メーカーのための大きなプロジェクトで働いていました。コントローラ層、サービス層、DAO層(データアクセスオブジェクト - DB照会用)がありました。ロジックは次のとおりです。コントローラーは要求を受信し、サービスは操作を行い、必要に応じてDAOを呼び出し、結果をコントローラーに返します。 DAOはDBにアクセスしてクエリを実行します。コントローラーレイヤーは非常に軽くなければならず、コントローラーはサービスに委託してビューをロードするだけでした。 DAOはクエリを実行し、サービスは残りのすべての作業をコントローラからのデータで行いました。 – BackSlash
あなたが言ったようにサービスに実装すべきいくつかのbussinessロジックが必要な場合は、この単純なケースでは 'User user = userService.findOne(id);'が必要です。 –
つまり、コントローラは何もしないでください。要求を受信して返信するだけです。両方ともありがとうございます:) –