묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
[정보글] HelloLombok 실행 시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문 하려다가 제가 해결한 내용을 공유합니다.build.gradle도 다 실행이 되었는데, 제가 겪는 에러 내용은 HelloLombok을 실행할 때에 문제가 발생한다는 점입니다.오류 내용 :Cause: class lombok.javac.apt.LombokProcessor (in unnamed module @0x26eb169f) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x26eb169f찾아보니 이는 JDK 16버전의 경우, Lombok과는 호환이 안된다는것이 원인이었습니다.따라서 https://icea.tistory.com/16이 링크를 참조했고, build.gradle을 이렇게 바꾸어서 해결할 수 있었습니다.해결 전 ://lombok 라이브러리 추가 시작 implementation 'org.projectlombok:lombok' annotationProcessor ("org.projectlombok:lombok") testImplementation 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //lombok 라이브러리 추가 끝 해결 후 : //lombok 라이브러리 추가 시작 implementation 'org.projectlombok:lombok' annotationProcessor ("org.projectlombok:lombok:1.18.20") testImplementation ("org.projectlombok:lombok:1.18.20") testAnnotationProcessor ("org.projectlombok:lombok:1.18.20") //lombok 라이브러리 추가 끝HelloLombok 코드package hello.core; import lombok.Getter; import lombok.Setter; import lombok.ToString; @Getter @Setter @ToString public class HelloLombok { private String name; private int age; public static void main(String[] args) { HelloLombok helloLombok =new HelloLombok(); helloLombok.setName("qwer"); String name = helloLombok.getName(); System.out.println("name = " + name); System.out.println("helloLombok = " + helloLombok); } } 혹시라도 안되셨던 분들은 참고하시길 바랍니다.
-
미해결스프링 핵심 원리 - 기본편
java, spring, gradle 최신버전 사용하시는 분들 lombok 설정 방법(질문x)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문은 아닙니다.강의 복습 도중에 최신버전 이슈로 인하여 lombok 설정시 이슈나는 분들에게 공유 드리고자 합니다. 작성자 개발 환경java ver.17spring boot ver.3.2.3gradle ver.8.5강의 내용을 따라하시다가 위와 같은 오류가 발생되는 분들은 gradle 최신 버전부터는 메소드명이 바뀌었기 때문이니 코드를 아래와 같이 설정하시고 gradle reload 하시면 정상적으로 적용되는거 확인 하실 수 있습니다. * 최신버전의 gradlecompile() 메소드 대신 implementation() 메소드를 사용으로 변경 조금이나마 도움되시길 바랍니다.
-
미해결스프링 핵심 원리 - 기본편
lombok 사용 시 [옵션 처리]와 [@Autowired 필드 명, @Qualifier, @Primary]는 어떻게 해야하나요?
[질문 내용]생성자를 딱 1개 두고, @Autowired를 생략하고 Lombok 라이브러리의 @RequiredArgsConstructor 함께 사용하면 final 필드를 매개변수로 가진 생성자를 만들어준다는 것까지는 어느 정도 이해 했습니다!1. 여기서 생성자가 1개이기 때문에 @RequiredArgsConstructor 애노테이션을 제외하면 코드에서 생성자에 관한 부분을 찾을 수 없는데 이전 강의[섹션 7: 옵션 처리]에서 학습한@Autowired(requited=false)@NullableOptional<>를 사용하고 싶다면 어떻게 사용해야하는 것인지 의문이 들어 질문드립니다!2.[@Autowired 필드 명, @Qualifier, @Primary] 강의에서의 @Autowired 필드 명 방법과 @Qualifier 방법(+ 애노테이션으로 만들어 사용하는 방법)도 lombok 라이브러리의 @RequiredArgsConstructor 사용시 어떻게 사용해야하는지도 궁금합니다.두 질문의 경우에는 lombok을 사용하지 않고 직접 생성자 주입 코드를 만들어야 할까요?
-
미해결스프링 핵심 원리 - 기본편
build.gradle에 롬복 추가할 때 dependencies 관련 질문드립니다
롬복 기능 추가할 때 build.gradle의 dependencies에 implementation 'org.projectlombok:lombok' 이 한 줄만 넣어줘도 롬복이 기능하는데 문제가 없는데 강의에서는 아래와 같이 여러 줄의 코드를 추가해줬습니다. 단순히 implementation만 추가해주는것과 강의에서 제시한 아래의 코드가 서로 어떻게 다른 건지 알 수 있을까요?//lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //lombok 라이브러리 추가 끝참고로 스프링부트 버전은 3.2.1 입니다.
-
해결됨스프링 핵심 원리 - 기본편
lombok 설치 시 에러
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]롬복 설치 과정에서 수업 자료에 있는 코드에서 자바 버전이나 스프링 버전 부분만 제외하고 복붙을 했는데 알수없는 에러가 발생하네요 ㅠㅠ 코드 전체plugins { java id("org.springframework.boot") version "2.7.10" id("io.spring.dependency-management") version "1.0.15.RELEASE" } group = "hello" version = "0.0.1-SNAPSHOT" java.sourceCompatibility = JavaVersion.VERSION_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.vintage', module: 'junit-vintage-engine' } } test { useJUnitPlatform() } 에러메시지C:\Users\USER\OneDrive\���� ȭ��\������\2. ������ �ٽ� ���� - �⺻��\core\build.gradle.kts:14:34: Expecting an element
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Lombok 플러그인 설치를 하려고 해도 마켓플레이스에 뜨지 않아요...
안녕하세요. 강의를 보고 차근차근 따라하는 중입니다. Servlet프로젝트를 추가 후에 Lombok이라는 플러그인을 추가를 하려고해도 제 인텔리제이에서는 lombok이 뜨지를 않습니다. Files -> Settings -> Plugins -> Lombok검색 Lombok이라고 검색하면 다른것들은 나옵니다. ROBOPOJOGenerator 라던지, Hrisey Plugin, GsonFormatPlus, Delombok, JPA Buddy... 등등 나오는데 강의에서 보여주신 Lombok은 나오지 않고있습니다. 어떤것을 다운받아야할까요?
-
해결됨스프링 핵심 원리 - 기본편
빈 스코프 강의에서 '웹 관련 스코프(request, session, application)'의 사용에 대한 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 빈 스코프 강의 02:20분 부터 '웹 관련 스코프'에 대해 설명하는 영상을 볼 수 있었습니다. request, session, application 각 스코프의 특징에 대해서 알게 되었지만 application 스코프의 실제 사용 방식에 질문하고자 글을 작성해 봅니다. request, session 스코프의 사용은 각각 요청과 응답, 로그인 상태 확인 등에 사용하는 것은 이전 MVC 강의와 현업에서의 코딩 등을 통해 알게 되었습니다. 다만, application 스코프에 대해서는 현업에서도 다루는 코드를 볼 수가 없어 자세히 언제 사용하는지 궁금증이 생기게 되었는데요. 아래 제가 생각하는 기능 구현(설계)시 application 스코프를 사용하는 것이 맞는지 첨언 부탁드립니다. =============================================== [기능 구현(설계)] 요구사항: 홈페이지를 개발하되, 홈페이지의 기본정보(홈페이지명, 고객센터 번호, 소재지, 서비스 이용약관 등)는 '관리자 페이지 > 사이트 기본환경설정' 메뉴를 통해 관리할 수 있게 한다. 구현(설계): 1. 데이터베이스(MySQL, Oracle 등)에서 '홈페이지 기본정보'와 관련된 테이블 설계 2. CRUD 프로그래밍 ㄴ 여기서 '홈페이지 기본정보'를 Read할 때에는 application 스코프에 그 정보를 담아둬서 모든 사용자들이 동일한 정보를 볼 수 있게 함. ** application 스코프에 담는 이유는? 애플리케이션이 종료되기 전까지 딱 한번 자료를 로딩시켜 놓으면 다음부터는 조회할 필요가 없기 때문. ** 우려되는 사항은? 혹시 application 스코프를 사용하는 것이 메모리 부담을 증진시키는지와 만약 '홈페이지 기본정보'가 수정되는 경우 기존에 application 스코프에 등록된 데이터는 어떻게 처리할 것인지...
-
미해결스프링 핵심 원리 - 기본편
lombok cannot find symbol 오류
스프링 부트 : 2.6.5 자바 : 11 현재 상태 : 컴파일러 설정 : 어노테이션 활성화 lombok 설치상태 : build.gradle 상태 : 프로젝트 외부 라이브러리 상태 : 프로젝트 설정 상태 : 오류 내용 : 혼자서 해결해 보려고 구글링을 통한 여러가지 방법을 시도해 보았지만 결국 다 실패하고 질문 올립니다...
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
lombok 관련 질문드립니다.
intellij에서 lombok을 설치하여 어노테이션설치 활성화까지 체크 후 시도 해봤으나 되지 않습니다. 다른 클래스에서는 lombok 이 적용 되어 잘 되는데 첫번째 이미지에서는 왜 실행이 되지 않을까요? 해결 방법이 궁금합니다. 다른 클래스 화면의 이미지까지 첨부하여 올리겠습니다. 참고 부탁드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트에서 lombok 사용
[질문 내용]안녕하세요. 저는 코틀린으로 코드를 짜며 수업을 듣고 있습니다. kotlin에서는 빌드 순서때문에 lombok을 적용하기 까다롭다고 알고 있는데, 실무에서 코틀린 프로젝트를 하실 때 lombok적용여부와 만약 lombok을 사용하신다면 적용방법이 궁금합니다! 항상 좋은 강의 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Data lombok 에러 관련
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 / 스프링통합과 폼 - 입력폼 처리 강의 소스 form-starter 프로젝트를 ide(sts) 에 넣고 수업에 따라 진행하던 중에 (windows10/ sts 사용 중) 동일한 template 소스를 적용했음에도 th:field 부분에 에러(아래 참고)가 발생했습니다.. 서치를 엄청 나게 했더니 lombok 이 제대로 동작 되지 않고 있는 현상과 동일한 듯 합니다만.. 어디가 문제 인지 모르겠습니다.. *th:field 이 부분 제거하면 정상 동작 됨 [THYMELEAF][http-nio-8080-exec-1] Exception processing template "form/addForm": Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "form/addForm" - line 24, col 6) 이미 sts에 lombok 연결 되어있으며, 프로젝트에서도 lombok이 추가 되어있고 .. 어디서 문제인건지 모르겠습니다 ㅠ_ㅠ 아래 관련 이미지 입니다. * SpringToolSuite4.ini 파일에도 -javaagent:C:\sts-4.7.1.RELEASE\lombok.jar 추가되어있음 lombok 파일 위치(설치 되어있음 : 1.18.22) 프로젝트에도 연결된 lombok (위 파일과 별도) build.gradle 설정 error
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
enable annotation processor에 체크가 안 되어있는데 롬복이 멀쩡히 잘 적용돼요
안녕하세요? '프로젝트 생성' 강의를 들으며 세팅하는 중에 질문이 생겨 질문 남깁니다. lombok plugin은 설치가 되어있었고 (spring boot 최신 버전은 기본적으로 세팅이 되어있다고 들었습니다) 이제 Enable annotation processing을 체크하려고 했습니다. 그래야 롬복을 사용할 수 있다고 하셨습니다. 그런데 저는 Enable annotation processing을 체크하지 않았는데도 @Getter, @Setter 등의 어노테이션이 잘 적용되어 hello.getData(), hello.setData("어쩌구");가 모두 잘 동작했습니다. Enable annotation processing을 체크하면 어떤 효과가 있는건가요? 왜 체크를 하지 않았는데도 잘 동작하는 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Lombok @Data 사용 관련
Lombok @Data 어노테이션은 예측하지 못하게 동작할 수 있기 때문에 핵심 도메인 모델에서 사용하기 위험하다고 하셨지만 단순하게 data 왔다갔다할 때 사용하는 DTO일 경우에는 확인해보고 사용해도 괜찮다고 수업 시간에 언급하셨잖아요. 그래서 되도록이면 @Data 어노테이션 사용은 자제해야겠다고 생각했는데 수업 시간에 예제 코드 작성하실 때는 자주 사용하시더라고요. @Data 어노테이션을 사용해도 되는지 안 되는지 혼란스러운데 이 부분에 대해서 풀어서 설명해주실 수 있나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
lombok @Getter로 수정되지 않도록 하는 가장 좋은 방법이 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 실무에서 class 멤버 중 collections가 있을 때 lombok @Getter로 수정되지 않게 하려면 어떤 방법이 가장 좋은지 궁금합니다. 강의 내용 중 실무에서는 lombok @Getter는 사용하는 것이 편리하지만 @Setter는 사용하면 변경 지점이 많아져 관리가 힘드므로 권장하지 않는다고 말씀해주셨습니다. 하지만 관련해서 찾아보니 class 멤버 중 list 같은 collections가 있다면 @Getter로도 데이터 변경이 가능합니다. 실제로 "엔터티 설계시 주의점" 강의에서 연관 관계 메서드에서 아래와 같이 Getter로 데이터를 변경해주셨는데요. (강의 23:55) //==연관 관계 메서드==//public void setMember(Member member) { this.member = member; member.getOrders().add(this);} 이렇게 한다면 Getter가 Setter처럼 쓰일 수 있으므로 역시 변경 지점이 많아질 수 있을 것 같습니다. 따라서 실무에서는 Getter가 Getter로서의 역할만 할 수 있도록 해주실 것 같은데요. 어떤 방법이 제일 좋은지 궁금합니다. 구글링으로 찾아봤을 때는 2021년까지도 이슈가 있고 @Value도 정확한 대안은 아닌 것 같습니다. https://github.com/projectlombok/lombok/issues/1504#issue-268909818 https://github.com/projectlombok/lombok/issues/1504#issuecomment-803578805 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
리텐션, requiredArgsConstructor 질문 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요 강사님~! 롬복 어노테이션인 requiredArgsConstructor 가 있으면 컴파일 시점에서 생성자를 자동 생성해 주잖아요. 근데 해당 어노테이션 선언을 들어가 보면 Retention policy가 Source 로 돼 있어요. 제 생각으론 Compile 로 돼 있어야 컴파일 시점에 해당 어노테이션이 메모리에 남아있어 해당 어노테이션을 보고 생성자를 생성할 것 같은데 말이죠. requiredArgsConstructor 의 Retention policy가 Source 로 돼 있어도 컴파일 시점에 생성자를 생성할 수 있나요? 감사합니다 ^0^