Final
스프링 기본 - 롬복과 최신 트랜드
스프링 기본 - 롬복과 최신 트랜드
2022.06.02롬복과 최신 트랜드 막상 개발을 해보면, 대부분이 다 불변이고, 그래서 다음과 같이 생성자에 final 키워드를 사용하게 된다. 그런데 생성자도 만들어야 하고, 주입 받은 값을 대입하는 코드도 만들어야 하고... 필드 주입처럼 좀 편리하게 사용하는 방법은 없을까? 다음 기본 코드를 최적화해보자. 기본 코드 생성자가 딱 1개만 있으면 @Autowired를 생략할 수 있다. 이제 롬복을 적용해보자. 롬복 라이브러리 적용 방법은 아래에 적어두었다. 롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다. (다음 코드에는 보이지 않지만 실제 호출 가능하다.) 최종 결과는 다음과 같다. 정말 간결하지 않은가!! 최종 결과..
스프링 기본 - 생성자 주입을 선택해라!
스프링 기본 - 생성자 주입을 선택해라!
2022.06.02생성자 주입을 선택해라! 과거에는 수정자 주입과 필드 주입을 많이 사용했지만, 최근에는 스프링을 포함한 DI 프레임워크 대부분이 생성자 주입을 권장한다. 그 이유는 다음과 같다. 불변 대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려 대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안된다. (불변해야 한다.) 수정자 주입을사용하면, setXxx 메서드를 public으로 열어두어야 한다. 누군가 실수로 변경할 수 도 있고, 변경하면 안되는 메서드를 열어두는 것은 좋은 설계 방법이 아니다. 생성자 주입은 객체를 생성할 때 딱 1번만 호출되므로 이후에 호출되는 일이 없다. 따라서 불변하게 설계할 수 있다. 누락 프레임워크 없이 순수한 자바 코드를 단위 테..
제어자, static, final, abstract
제어자, static, final, abstract
2022.04.01제어자 (modifier) 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 제어자는, 클래스와 클래스멤버 앞에 붙여서 부가적인 의미를 부여한다. 영어로 따지면, 형용사와 같은 느낌이다. 명사 앞에 붙어서 명사를 꾸며준다. 제어자도 마찬가지로 클래스나 클래스멤버 앞에 붙어서 부가적인 의미를 부여한다. 제어자의 종료 제어자의 종류에는 크게 2부류로 나뉘는데, 접근 제어자 - public, protected, (default), private 그 외 - static, final, abstract, native, transient, synchronized, volatile, strictfp 접근제어자는 4개이다. 접근제어자는 하나의 대상에 이 4개 중에 1개만 붙일 수 있다. 예를 들어, iv..