반응형
Lombok 같은 경우 그냥 저장소에서 다운만 받아서는 실행이 불가능하고 jar파일을 실행시켜서 해당 프로젝트가 롬복을 사용한다는 설정을 해줘야합니다. Lombok에 기능은 필드명만 넣어주고 어노테이션만 설정하면 생성자 및 Getter 및 Setter를 안 만들어도 자동 생성해줍니다.
Maven의 경우 여기에 들어있고
C:\Users\${사용자계정}\.m2.....
Gradle의 경우 여기에 들어가있습니다.
C:\Users\${사용자계정}\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.18.24
cmd에서 jar 실행시켜주면 이렇게 나옵니다.
Specifiy location을 누른 후 sts4(툴)을 선택해줍니다.
Install 눌러서 툴에 설정을 설치하시면 됩니다. 그 후 sts4 재실행 해주세요
package com.lsj.chatting;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
// @Getter // Getter 생성
// @Setter // Setter 생성
// @RequiredArgsConstructor // final 필드가 존재할 경우 생성자
@Data // Getter + Setter 생성
// @AllArgsConstructor // 생성자 생성
@NoArgsConstructor // 기본생성자
public class Account {
// private final String id; // DB에서 값을 받아와 수정할 일이 없을 때는 final 로 쓰는게 trend
// private final int password; // DB에서 값을 받아와 수정할 일이 없을 때는 final 로 쓰는게 trend
private String id;
private int password;
@Builder // 내가 원하는 생성자 파라미터 지정 가능 (자세한건 TestController에서 봐주세요)
public Account(String id, int password) {
this.id = id;
this.password = password;
}
}
package com.lsj.chatting;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test/get")
public String hello(Account account) {
account.setId("hello");
account.setPassword(1234);
System.out.println("id : " + account.getId() + " password :" + account.getPassword() );
// id : hello password :1234 출력
account = Account.builder().password(0).build(); // password만 포함된 생성자
System.out.println("id : " + account.getId() + " password :" + account.getPassword() );
// id : null password :0
Account account2 = Account.builder().password(150).id("halo").build(); // id, password가 포함된 생성자
System.out.println("id : " + account2.getId() + " password :" + account2.getPassword() );
// id : halo password :150
// @Builder는 다양하게 생성자를 오버로딩해서 만들 수 있다. →
return "<h1> get </h1>";
}
@DeleteMapping("/test/delete")
public String delete() {
return "<h1> delete </h1>";
}
@PostMapping("/test/post") // Body : json → application/json (Text → text/plain로 요청시 에러 발생 [자동매핑이 안 되어서])
public String post(@RequestBody Account account) { // MessageConverter라는 Class가 자동 Injection을 해준다.
return "id : " + account.getId() + "\n password : " + account.getPassword();
// {id:1,password:1234} 으로 요청
}
@PostMapping("/test/post2") // Body : Text → text/plain
public String post2(@RequestBody String text) { // @requestBody body 데이터를 받기 위해 필요
return text; // 정말로 맛있어요 으로 요청
}
@PutMapping("/test/put")
public String put() {
return "<h1> put </h1>";
}
}
반응형