Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- springdatajpa
- JPQL
- java
- JDBC
- Spring Boot
- 스프링
- Android
- 인프런
- db
- Proxy
- spring
- 스프링 핵심 원리
- transaction
- 백준
- kotlin
- 알고리즘
- jpa
- http
- AOP
- QueryDSL
- Greedy
- 그리디
- SpringBoot
- Exception
- Thymeleaf
- Servlet
- 김영한
- 자바
- pointcut
- 스프링 핵심 기능
Archives
- Today
- Total
개발자되기 프로젝트
의존관계 주입, lombok 본문
- lombok 개편함
- 대부분 의존관계는 불변이다.
- 따라서 생성자에 final 키워드 사용함
- 근데 생성자도 만들어야 하고,,, 대입하는 코드도 만들어야하고.. 여간 귀찮은게 아니다.
- 해줘!
1. build.gradle
- dependencies 추가
implementation 'org.projectlombok:lombok:1.18.18'
implementation 'org.projectlombok:lombok:1.18.18'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
2. 사용 예시
Lombok
@EqualsAndHashCode 특별히 JPA에서 @EqualsAndHashCord를 사용할 일 많이 없음. 다만 @Data에서 구현하고 있는 내용이고 자바에서 객체의 동등성을 비교하기 위해서 equals method와 hashCode method를 overridin..
bsh-developer.tistory.com
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class HelloLombok {
private String name;
private int age;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setAge(1);
helloLombok.setName(":dddd");
int age = helloLombok.getAge();
String name = helloLombok.getName();
}
}
3. Lombok 적용
- RequiredArgsConstructor : final인 필드를 받는 생성자를 만듦.
- 코드가 굉장히 깔끔해진다...
@Component @RequiredArgsConstructor //final 붙은 필드를 받는 생성자를 만듦 public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; //이렇게하면 인터페이스에만 의존함. @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); //OrderService : 할인금액 나는 몰라, discountPolicy 니가 내놔 //discountPolicy : 네 int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } }
- 의존관계 추가할 때 굉장히 편리함! 생성자 만들어줘서 개편리..
- 근데 @Autowired는....?
- 생성자가 딱 1개만 있으면 @Autowired 생략이 가능해!
- 그러니 생성자를 딱 하나만 두고 Lombok의 @RequiredArgsConstructor를 같이 사용하자.
- 기능은 다 제공하고 코드는 깔 ~ 끔해진다.
4. GitHub : 210729 lombok
GitHub - bsh6463/SpringCoreFunction
Contribute to bsh6463/SpringCoreFunction development by creating an account on GitHub.
github.com
'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글
@Qualifier, 타입체크, annotaion만들기 (0) | 2021.07.30 |
---|---|
조회할 빈이 2개 이상일 경우? (0) | 2021.07.30 |
생성자 주입을 선택해! (0) | 2021.07.29 |
@Autowired 옵션처리 (0) | 2021.07.29 |
의존관계 주입 방법 (0) | 2021.07.29 |
Comments