728x90
반응형
Lombok
Lombok 이란?
사이트 주소: https://projectlombok.org/features/all
사이트 설명중 아래말이 멋지다.
Never write another getter or equals method again
getter 와 동등한 메서드를 쓰지 말라고 한다. 상당히 훌룡하다.
Lombok(롬복)은 Java 라이브러리다.
getter, setter, toString 등의 메서드 작성 코드를 알아서 만들어 준다.
Lombok 을 사용하는이유
getter, setter, toString를 직접 안만들어도 된다.
코드가 간결해진다.
Lombok 적용해보기
Lombok 환경설정
파일명: build.gradle
plugins {
id 'org.springframework.boot' version '2.4.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
//lombok 설정 추가 시작
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
//lombok 설정 추가 끝
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//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') {
exclude group: 'org.junit'
}
}
test {
useJUnitPlatform()
}
Lombok 적용전 기존코드
public class Model {
private String id;
private String name;
public String getId() {
return id;
}
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
Lombok 적용1
@Getter, @Setter 사용
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
// 롬복 적용
public class Model {
private String id;
private String name;
public static void main(String[] args) {
Model model = new Model();
model.setName("TEST");
System.out.println(model.getName());
}
}
적용한 코드를 보면
getName() setName 함수가 없어도 잘 동작한다.
Lombok의 @Getter, @Setter를 적용했기 때문에 가능하다.
정말 구현되었는지 확인해보자.
빨간 고추아이콘으로 getter, setter가 보인다.
lombok에서 구현을 해주었다.
Lombok 적용2
@Data 사용
import lombok.Data;
@Data
public class Model {
private String id;
private String name;
public static void main(String[] args) {
Model model = new Model();
model.setName("TEST");
System.out.println(model.getName());
}
}
@Data를 사용하여 @Getter @Setter 를 생략 가능하다.
즉 @Data로 더 쉽게 처리 가능하다.
Lombok 으로 생성자 생략하기
생성자 까지 Lombok 으로 해결가능하다.
Test를 위해서 3개의 클래스를 만들었다.
- Model: 해당 모델은 Model2를 필요로 한다.
- Model2: Model2 구현
- modelConfig: 스프링 적용을 하기 위한 Config 클래스
Model2
public class Model2 {
int id;
int name;
}
Config
import hello.core.member.MemberServiceImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class modelConfig {
@Bean
public Model2 model2() {
return new Model2();
}
@Bean
public Model model() {
return new Model(model2());
}
}
Lombok 적용전
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.stereotype.Component;
@Component
public class Model {
private String id;
private String name;
private final Model2 model2;
@Autowired
public Model(Model2 modle2){
this.model2 = modle2;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(modelConfig.class);
Model model = ac.getBean("model", Model.class);
model.setName("TEST2");
System.out.println(model.getName());
}
}
Lombok 적용후 생성자 생략 가능
@Component
@RequiredArgsConstructor
@Data
public class Model {
private String id;
private String name;
private final Model2 model2;
/*
@Autowired
public Model(Model2 modle2){
this.model2 = modle2;
}
*/
public static void main(String[] args) {
ApplicationContext ac = new AnnotationConfigApplicationContext(modelConfig.class);
Model model = ac.getBean("model", Model.class);
model.setName("TEST23");
System.out.println(model.getName());
}
}
728x90
반응형
'Spring > spring 기초 스터디' 카테고리의 다른 글
[Spring] 조회한 빈을 선택해서 사용할때 (0) | 2021.05.24 |
---|---|
[Spring] 조회된 빈이 2개일때 No qualifying bean (0) | 2021.05.23 |
[Spring] 의존성 주입방법 2 (0) | 2021.05.17 |
[Spring] 의존성 주입방법 1 (0) | 2021.05.15 |
[Spring] ComponentScan2 - Annotation만들기 (0) | 2021.05.08 |
댓글