複数の Spring Bean 依存関係 (自動配線サービス) を持つ Spring コントローラーがあります。各サービスには、Spring Bean の依存関係もほとんどありません (autowired daos)。たとえば、コントローラーのログイン方法は次のとおりです。
@Controller
@RequestMapping("/")
public class ClientAccessController extends BaseController {
@Autowired
IFileService fileService;
@Autowired
MidTierService midTierService;
/**
* Used to handle client login requests
* Works as a proxy to MID tier server
*
* @param request LoginRequest(userLogin, userPassword, compId, installGuid)
* @return LoginResponse (token)
* @throws Exception
*/
@RequestMapping(method = RequestMethod.POST, value = "/login", headers = "Content- type=application/json")
public ResponseEntity<LoginResponse> login(@RequestBody LoginRequest request) throws Exception {
log.info("LOGIN REQUEST [ " + request.toString() + " ]");
String token = midTierService.authenticateNativeClient(request.getLogin(), request.getPassword(), request.getGuId(),
request.getCompid().toString());
LoginResponse response = new LoginResponse(token);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
ResponseEntity<LoginResponse> responseEntity = new ResponseEntity<>(response, HttpStatus.OK);
log.info("LOGIN RESPONSE [ " + response.toString());
return responseEntity;
}
controller のみの JUnit テストを作成しようとしていますClienAccessController
。しかしClientAccessController
、テストクラスで自動配線すると、Spring はすべてのコントローラーの依存関係とすべてのネストされたもの (daos など) の Bean を作成しようとしますが、本当に em は必要ありませんMidTierService
。では、ネストされた Bean の初期化を除外し、テスト クラスで必要なものだけを使用するにはどうすればよいでしょうか?