본문으로 바로가기

목차

    @AllArgsConstructor

    • 클래스의 모든 필드에 대한 생성자를 자동으로 생성합니다.

    1. Lombok 적용 전

    public class Test {
    
        private final Long age;
        private final String name;
        private String address;
    
        public Test(Long age, String name, String address) {
            this.age = age;
            this.name = name;
            this.address = address;
        }
    
        public Long getAge() {
            return age;
        }
    
        public String getName() {
            return name;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }

    2. 롬복 적용 후

    import lombok.*;
    
    @AllArgsConstructor
    @Getter @Setter
    public class Test {
    
        private final Long age;
        private final String name;
        private String address;
    }
    public class Execute {
    
        public static void main(String agrs[]) {
    
            Test test = new Test(10L, "veneas", "seoul");
    
            System.out.println(test.getAge());
            System.out.println(test.getName());
            System.out.println(test.getAddress());
        }
    }

    @RequiredArgsConstructor

    • 클래스의 final 필드에 대한 생성자를 자동으로 생성합니다. 
    • final 필드는 클래스에서 초기화를 하던지 객체 생성 시 생성자를 이용해 꼭 초기화해줘야 합니다.

    1. Lombok 적용 전

    public class Test {
    
        private final Long age;
        private final String name;
        private String address;
    
        public Test(Long age, String name) {
            this.age = age;
            this.name = name;
        }
    
        public Long getAge() {
            return age;
        }
    
        public String getName() {
            return name;
        }
    }

    2. 롬복 적용 후

    import lombok.*;
    
    @RequiredArgsConstructor
    @Getter @Setter
    public class Test {
    
        private final Long age;
        private final String name;
        private String address;
    }
    public class Execute {
    
        public static void main(String agrs[]) {
    
            Test test = new Test(10L, "veneas");
    
            System.out.println(test.getAge());
            System.out.println(test.getName());
        }
    }

    Spring 의존성 주입(dependency injection) 활용

    • Spring 생성자를 활용한 의존성 주입시 사용할 수 있습니다.
    • 다음 예시는
      1. 리포지토리에서 EntityManager 주입
      2. 서비스 코드에서 리포지토리 주입

    1. 리포지토리에서 EntityManager 주입

    [Lombok 적용 전]

    import org.springframework.stereotype.Repository;
    
    import javax.persistence.EntityManager;
    
    @Repository
    public class TestRepository {
    
        private final EntityManager em;
    
        public TestRepository(EntityManager em) {
            this.em = em;
        }
    }

     

    [Lombok 적용 후]

    import lombok.RequiredArgsConstructor;
    import org.springframework.stereotype.Repository;
    
    import javax.persistence.EntityManager;
    
    @Repository
    @RequiredArgsConstructor
    public class TestRepository {
    
        private final EntityManager em;
    }

    2. 서비스 코드에서 리포지토리 주입

    [Lombok 적용 전]

    import org.springframework.stereotype.Service;
    
    @Service
    public class TestService {
    
        private final TestRepository testRepository;
    
        public TestService(TestRepository testRepository) {
            this.testRepository = testRepository;
        }
    }

     

    [Lombok 적용 후]

    import lombok.RequiredArgsConstructor;
    import org.springframework.stereotype.Service;
    
    @Service
    @RequiredArgsConstructor
    public class TestService {
    
        private final TestRepository testRepository;
    }