Tech/Spring | Spring Boot

[Lombok] @Cleanup, @All/NoArgsConstructor, @RequiredArgsConstructor

싱브이 2024. 4. 12. 12:09
728x90
반응형

알아두면 쓸모있는 어노테이션! 사실 내가 알아두려고 적어두는 글 ㅎ 다른 것도 점차점차 추가해야할듯 !

 

1. @Cleanup

public String getTime() {
        String now = null;
        try(Connection connection = ConnectionUtil.INSTANCE.getConnection();
            PreparedStatement preparedStatement = connection.prepareStatement("select noew()");
            ResultSet resultSet = preparedStatement.executeQuery();){
            resultSet.next();
            now = resultSet.getString(1);
        } catch (Exception e){
            e.printStackTrace();
        }
    }

 

public String getTime() throws Exception{
        @Cleanup Connection connection = ConnectionUtil.INSTANCE.getConnection();
        @Cleanup PreparedStatement preparedStatement = connection.prepareStatement("select noew()");
        @Cleanup ResultSet resultSet = preparedStatement.executeQuery();
        resultSet.next();
        String now = resultSet.getString(1);
        return now;
    }

 

@Cleanup 은 try-with-resource와 비슷한데 더 깔끔하게 코드를 생성할 수 있다.

@Cleanup이 추가된 변수는 해당 메소드가 끝날 때 close()가 보장된다! 

 

 

2. @AllArgsConstructor, @NoArgsConstructor

아래는 생성자를 자동 생성해주는 어노테이션 종류이다.

  • @NoArgsConstructor : 파라미터가 없는 디폴트 생성자를 생성
  • @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 생성
  • @RequiredArgsConstructor : final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 생성

*참고

생성자 주입 방식 규칙

- 주입 받아야 하는 객체의 변수는 final로 작성

- 생성자를 이용해서 해당 변수를 생성자의 파라미터로 지정

 

 

*빈이 두개일 때는?

객체가 두 개이면 스프링은 어떤 것을 주입해야하는지 알 수 없다. 

그래서 둘 중 하나의 우선순위를 어노테이션으로 지정해주어야한다.

@Primary

@Primary로 지정하면 지정된 빈을 등록한다.

 

@Qualifier

@Qualifier는 특정한 이름의 객체를 주입받는 방식이다. 주입받는 곳에서 그 이름으로 주입받는다 !

예) @Qualifier("normal") 

 

 

728x90
반응형