728x90
반응형
1. Lombok
필드에 @Autowired 주입 처럼 편하게 사용하는 방법을 제공하는 lombok 라이브러리가 있다.
2. build.gradle 파일을 수정한다.
/build.gradle
plugins {
id 'org.springframework.boot' version '2.7.3'
id 'io.spring.dependency-management' version '1.0.13.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
//lombok 라이브러리 추가 시작
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//lombok 라이브러리 추가 끝
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
3. Plugins 를 확인한다.
Preferences -> plugins 검색 -> lombok 검색 -> installed 에 있는지 확인 ( 없으면 설치 )
4. Annotation processors 를 설정한다.
5. @Getter @Setter Annotation을 확인해본다.
package hello.core;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class HelloLombok {
private String name;
private int age;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok();
helloLombok.setName("teepo");
System.out.println(helloLombok.getName());
}
}
이렇게 따로 Getter, Setter 를 선언해주지 않아도 사용할 수 있다.
String에서도 유용한 상황이 있는데,
예를 들어 아래의 코드가 있을 때
@Component
public class OrderServiceImpl implements OrderService {
private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
@Override
public Order createOrder(Long memberId, String itemName, int itemPrice) {
Member member = memberRepository.findById(memberId);
int discountPrice = discountPolicy.discount(member, itemPrice);
return new Order(memberId, itemName, itemPrice, discountPrice);
}
// test
public MemberRepository getMemberRepository() {
return memberRepository;
}
}
변수 선언에 final 을 붙이고 생성자를 Annotation으로 만들어 줄 수 있다.
@Component
@RequiredArgsConstructor
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);
int discountPrice = discountPolicy.discount(member, itemPrice);
return new Order(memberId, itemName, itemPrice, discountPrice);
}
// test
public MemberRepository getMemberRepository() {
return memberRepository;
}
}
생성자가 한 개였기 때문에 @Autowired 옵션이 자동으로 붙었다.
728x90
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
Spring Boot | 지식 | http 요청 객체 로그로 확인하기 (0) | 2022.08.29 |
---|---|
Spring Boot | 지식 | 포트 변경 방법 (0) | 2022.08.28 |
Spring Boot | 지식 | 싱글톤 컨테이너 (0) | 2022.08.25 |
Spring Boot | 지식 | IoC, DI, Container (0) | 2022.08.24 |
Spring Boot | 지식 | SOLID (0) | 2022.08.23 |