반응형

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>";
	}
	
}
반응형