반응형
📝 @Getter, @Setter, @RequriedArgsConstructor, @Data, @AllArgsConstruct, @NoArgsConstructor (롬복 필요)
@Getter // Getter 생성
@Setter // Setter 생성
@RequiredArgsConstructor // 생성자 DI
@Data // Getter + Setter 생성
@AllArgsConstructor // 생성자 생성
@NoArgsConstructor // 기본생성자
@ToString(of = {"id","password"})
public class Account {
// private final String id; // DB에서 값을 받아와 수정할 일이 없을 때는 final 로 쓰는게 trend
// private final int password; // DB에서 값을 받아와 수정할 일이 없을 때는 final 로 쓰는게 trend
private String id;
private int password;
@Builder // 내가 원하는 생성자 파라미터 지정 가능
public Account(String id, int password) {
this.id = id;
this.password = password;
}
}
📝 @ResponseStatus
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@GetMapping("/response-body-json-v2")
public String responseBodyJsonV2() {
String logInfo = "abc";
log.info("log : {}", logInfo);
return logInfo;
}
HTTP 통신 상태 코드값을 지정할 수 있습니다.
📝 @ExceptionHandler
public class ApiExceptionV2Controller {
...
@ResponseStatus(HttpStatus.BAD_REQUEST) // 해당 Status 설정 없으면 200(정상)이 나가기 때문에 따로 설정 필요
@ExceptionHandler(IllegalArgumentException.class) // 해당 컨트롤러에서만 IllegalArgumentException 발생 시 작동
public ErrorResult illegalExHandler(IllegalArgumentException e){
log.error("[exception] ex",e);
return new ErrorResult("BAD",e.getMessage());
/**
* {
* "code": "BAD",
* "message": "잘못된 입력 값"
* }
*/
}
@GetMapping("/api2/members/{id}")
public MemberDto getMember(@PathVariable("id") String id) {
if (id.equals("ex")) {
throw new RuntimeException("잘못된 사용자");
}
if (id.equals("bad")) {
throw new IllegalArgumentException("잘못된 입력 값");
}
if (id.equals("user-ex")) {
throw new UserException("사용자 오류");
}
return new MemberDto(id, "hello " + id);
}
}
현 컨트롤러 내에서 지정한 에러 발생시 핸들링할 수 있는 역할을 한다
📝 @Transactional
@Transactional
public void updateSomething(MembmerDto membmerDto){
// ... 업데이트
// 실패!! -> RollBack
}
📝 @TestConfiguration
@TestConfiguration
static class TestConfig {
private final DataSource dataSource;
public TestConfig(DataSource dataSource) {
this.dataSource = dataSource;
}
@Bean
MemberRepositoryV3 memberRepositoryV3() {
return new MemberRepositoryV3(dataSource);
}
@Bean
MemberServiceV3_3 memberServiceV3_3() {
return new MemberServiceV3_3(memberRepositoryV3());
}
}
테스트 환경에서 @Configuration역할을 한다.
반응형