programing

그래들 및 스프링 부츠와 함께 롬복 사용

lastmoon 2023. 3. 13. 20:45
반응형

그래들 및 스프링 부츠와 함께 롬복 사용

저는 롬복으로 프로젝트를 진행하려고 하는데 이것이 제가 가지고 있는 의지력입니다.

dependencies {
   compile("org.springframework.boot:spring-boot-starter-thymeleaf")
   compile("org.springframework.social:spring-social-facebook")
   compile("org.springframework.social:spring-social-twitter")
   testCompile("org.springframework.boot:spring-boot-starter-test")
   testCompile("junit:junit")
   compile("org.springframework.boot:spring-boot-devtools")
   compile("org.springframework.boot:spring-boot-starter-data-jpa")
   compile("mysql:mysql-connector-java")
   compileOnly("org.projectlombok:lombok:1.16.10")
}

아노테이션도 넣을 수 있고, 롬복도 에디터에 포함시켰습니다.롬복으로 코드 컴파일도 할 수 있고 롬복으로 생성된 메서드로 cal을 할 수도 있습니다.

이것은 나의 엔티티입니다.

@Data
@Entity
@Table(name = "TEA_USER", uniqueConstraints = {
    @UniqueConstraint(columnNames = { "USR_EMAIL" }),
    @UniqueConstraint(columnNames = { "USR_NAME" })
})
public class User {


   @NotNull
   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name="USR_ID")
   private long id;

   @NotNull
   @Column(name="USR_FNAME")
   private String firstName;

   @NotNull
   @Column(name="USR_LNAME")
   private String lastName;


   @NotNull
   @Min(5)
   @Max(30)
   @Column(name="USR_NAME")
   private String username;

   @Column(name="USR_EMAIL")
   private String email;

   @Min(8)
   @NotNull
   @Column(name="USR_PASSWORD")
   private String password;
}

이 함수는 세밀하게 컴파일 할 수 있습니다.

@PostMapping("/registration/register")
public String doRegister (@ModelAttribute @Valid User user, BindingResult result){
    user.getEmail();
    System.out.println(user.getFirstName());
    if (result.hasErrors()) {
         return "register/customRegister";
    }
    this.userRepository.save(user);
    return "register/customRegistered";
}

그러나 bootRun을 실행하여 기능에 액세스하려고 하면 다음과 같은 예외가 발생합니다.

org.springframework.beans.NotReadablePropertyException: Invalid property 'firstName' of bean class [com.lucasfrossard.entities.User]: Bean property 'firstName' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

단, 수동으로 setter와 getter를 포함하면 문제가 없습니다.무슨 일이 일어나고 있고 어떻게 고쳐야 할지 모르겠어요.감 잡히는 게 없어요?

최신 Lombok 1.18에서는 심플합니다. io.franzbecker.gradle-lombok플러그인은 필요 없습니다.프로젝트의 종속성 예:

dependencies {
    implementation "org.springframework.boot:spring-boot-starter-thymeleaf"
    implementation "org.springframework.social:spring-social-facebook"
    implementation "org.springframework.social:spring-social-twitter"
    implementation "org.springframework.boot:spring-boot-starter-data-jpa"

    testImplementation "org.springframework.boot:spring-boot-starter-test"

    runtimeClasspath "org.springframework.boot:spring-boot-devtools"
    runtime "mysql:mysql-connector-java"

    // https://projectlombok.org
    compileOnly 'org.projectlombok:lombok:1.18.4'
    annotationProcessor 'org.projectlombok:lombok:1.18.4'
}

기타 제안:

  1. testCompile("junit:junit")는 필수가 아닙니다.spring-boot-starter-test'스타터'에는 JUnit이 들어있습니다.
  2. 사용하다implementation또는api대신 설정compile(Gradle 3.4 이후).어떻게 해야 제대로 된 걸 고를 수 있지?
  3. 사용 안 함compile설정devtools. 개발자 도구 가이드의 힌트:

    Maven에서 종속성에 플래그를 옵션으로 지정하거나 사용자 지정 사용developmentOnlygradle 구성(위 그림 참조)은 프로젝트를 사용하는 다른 모듈에 devtools가 일시적으로 적용되지 않도록 하는 모범 사례입니다.

  4. IntelliJ IDEA 를 사용하는 경우는, Lombok 플러그 인이 인스톨 되어 있고, 주석 처리가 유효하게 되어 있는 것을 확인해 주세요.초기 프로젝트 셋업을 쉽게 할 수 있도록 필요에 따라 Lombok 플러그인을 지정할 수도 있습니다.

한동안 이 문제로 고민하다가 이 플러그인이 효과가 있다는 것을 알게 되었습니다.

https://github.com/franzbecker/gradle-lombok

그래들 파일은 다음과 같습니다.

buildscript {
    repositories {
        maven { url "https://repo.spring.io/libs-milestone" }
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE")
        classpath 'org.springframework:springloaded:1.2.6.RELEASE'
    }
}

plugins {
    id 'io.franzbecker.gradle-lombok' version '1.8'
    id 'java'
}



apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'



jar {
    baseName = 'gs-accessing-facebook'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/libs-milestone" }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    // compile("org.projectlombok:lombok:1.16.10")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.springframework.social:spring-social-facebook")
    compile("org.springframework.social:spring-social-twitter")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile("junit:junit")
    compile("org.springframework.boot:spring-boot-devtools")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("mysql:mysql-connector-java")
}

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

bootRun {
    addResources = true
    jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
}

이 플러그인은 전에 본 적이 있는데 제가 잘못해서 작동하지 않았습니다.이제 효과가 있어서 다행이에요.

감사합니다!

사용하시는 경우Eclipse또는 그 오프샵 중 하나(Spring Tool Suite를 사용하고 있습니다.4.5.1.RELEASE, - 다른 모든 릴리스에도 같은 순서가 적용됩니다).필요한 것은 다음과 같습니다.

  • build.gradle:

    dependencies {
      compileOnly 'org.projectlombok:lombok'  
      annotationProcessor 'org.projectlombok:lombok'
    }
    
  • 다음으로 [프로젝트]> [ Gradle ]> [ Refresh Gradle Project ]를 오른쪽 클릭합니다.lombok-"version".jar프로젝트의 프로젝트외부 종속성 내에 표시됩니다.

  • 오른쪽 클릭lombok-"version".jar> [ Run As ]> [ Java Application ](실제 jar를 더블 클릭하거나 실행하는 것과 유사)java -jar lombok-"version".jar를 참조해 주세요).

  • 에 따라 GUI가 표시되며, 그 중 가 GUI를 복사하는 GUI gui gui 、 GUI 、 GUI 。lombok.jarIDE를 사용하다

주의: IDE 를 재기동해, 이전에 컴파일 한 파일을 모두 클리어 해 주세요.

언급URL : https://stackoverflow.com/questions/40475910/using-lombok-with-gradle-and-spring-boot

반응형