스프링 부트(SpringBoot)는 스프링 프레임워크를 사용하는 독립 실행형 애프릴케이션을 쉽고 편리하게 만들 수 있는 기능을 제공하는 프로젝트이다.
스프링 부트는 최소한의 스프링 프레임워크 초기 설정으로 쉽고 빠르게 웹 애플리케이션을 작성하고 실행할 수 있도록 설계되어 있어서 개발환경 구축을 위한 반복되는 코드 작성 등의 노력을 줄여준다. 그러므로 스프링 부트를 사용하면 빠르게 프로젝트를 구성하고 애플리케이션을 개발 할수 있다.
▪ 복잡한 설정 없이도 독립 실행형 스프링 프레임워크의 애플리케이션을 쉽고 빠르게 생성
▪ 웹 컨테이너를 내장하고 있어서 별도의 war 파일 생성이나 WAS 설정 없이 배포
▪ “starter”의 의존성을 통해 라이브러리를 관리하므로 라이브러리 호환성 문제없이 개발
▪ 가능할 때마다 Spring 또는 다른 라이브러리를 자동으로 구성할 수 있음
▪ 애플리케이션에서 필요한 설정을 자동화하고 개발 및 테스트 도구를 제공해 생산성을 향상






롬복(lombok)은 자바 클래스에 생성자,Getter,Setter,toString 등 반복적으로 만들어야 하는 함수들을 자동으로 만들어 주는 애노테이션 기반의 라이브러리이다. 스프링 부트 프로젝트를 진행하면서 DTO 클래스나 데이터 처리를 위한 엔티티 클래스 등을 많이 만들게 되는데 이때 클래스의 생성자나 프로퍼티에 대한 Getter,Setter를 만들 때 롬복을 사용하면 매우 유용하다
다운로드사이트
http://projectlombok.org/download
“lombok.jar” 파일을 탐색기에서 더블클릭 했을 때 설치 프로그램이 실행되지 않고
해당 프로그램을 찾을 수 없다는 메시지가 나타나거나 압축 프로그램 등으로 연결되면 “lombok.jar” 파일이 있는 폴더를 “Code로 열기” 메뉴로 폴더를 열어서 VSCode의 터미널에서 다음 명령으로 실행하면 롬복 설치 마법사가 실행된다.




@ToString
@NoArgsConstructor
// 기본 생성자 자동 생성
@RequiredArgsConstructor
// final이나 @NonNull인 프로퍼티만 받는 생성자 자동 생성
@AllArgsConstructor
// 모든 프로퍼티를 받는 생성자 자동 생성
public class Member02 {
@NonNull
private String name;
private String gender;
private int age;
}
public class LombokTest02 {
public static void main(String[] args) {
Member02 m1 = new Member02();
Member02 m2 = new Member02("이순신");
Member02 m3 = new Member02("어머나", "여성", 27);
System.out.println(m1);
System.out.println(m2);
System.out.println(m3);
}
}



스프링 프로젝트를 시작하는 메인 클래스에 @SpringBootApplication 애노테이션을 사용한다. 이 애노테이션은 Spring Boot의 핵심이며 다양한 기능을 한번에 활성화 시켜주는 역활을 한다. @SpringBootApplication 은 여러 기능을 한 번에 제공하여 개발자가 웹 애플리케이션을 빠르게 개발 할 수 있도록 도와주낟.

build.gradel에 spring-boot-devtools와 lombok에 대한 의존 설정을 하고 적용

@RestController
Public class SecondController{
@GetMapping("/"
public String main(){
return "{\"main\":\"여기는 메인\"}";
]
}
@GetMapping("/hello")
public Map<String,String> hello(@RequestParam(value="name")String name){
Map<String,String> map = new HashMap<>();
map.put("title", "Second Controller");
map.put("greeting","안녕 하세요 " + name + "님~");
return map;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Member{
private String id;
private String name;
private String age;
}
@GetMapping("/member/{id}")
public Map<String,Oject> getMember(@PathVariable("id")String id){
Map<String,Object> map = new HashMap<>();
map.put("id", id);
map.put("name","홍길동");
map.put("age",250;
return map;
}
@Postmapping("/members")
public Member addmember(Member member){
return member;
}