package com.mysite.irms;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("/hello")
@ResponseBody
public String Hello() {
return "Hello World!";
}
}
@Controller : HelloController 클래스가 컨트롤러의 기능을 수행한다는 의미@GetMapping("/hello") annotation은 http://localhost:8080/hello URL 요청 발생 시 hello 메소드 실행되게 함/hello URL과 hello 메소드를 매핑하는 역할
- Java의 annotation은 자바의 클래스, 메소드, 변수 등에 정보를 부여해 부가 동작을 가능하게끔 함
- 매핑한다는 뜻은 특정 URL 경로를 서버의 특정 메소드와 연결하는 것을 의미
@GetMapping을 사용@PostMapping을 사용@ResponseBody annotation은 hello 메소드의 출력 결과가 문자열 그 자체임을 나타냄

localhost:8080/hello 로 확인/hello URL이 요청되면 컨트롤러인 HelloController의 /hello URL과 매핑된 hello 메소드가 호출되고, 문자열이 브라우저에 출력됨build.gradle...
dependencies {
...
developmentOnly 'org.springframework.boot:spring-boot-devtools`
}build.gradle 파일 선택 후 우클릭하여 [Gradle] - [Refresh Gradle Project] 클릭lombok.jar 파일이 있는 경로로 이동 후 java -jar lombok.jar 명령어 실행build.gradle 파일에서 아래와 같이 입력...
dependencies {
...
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}build.gradle 파일 선택 후 우클릭하여 [Gradle] - [Refresh Gradle Project] 클릭package com.mysite.irms;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
@Getter
@RequiredArgsConstructor
// @Setter
public class HelloLombok {
private final String hello;
private final int lombok;
public static void main(String[] args) {
HelloLombok helloLombok = new HelloLombok("hello", 5);
System.out.println(helloLombok.getHello());
System.out.println(helloLombok.getLombok());
}
}
hello, lombok 속성에 final을 추가하고 @RequiredArgsConstructor annotation을 적용하면 해당 속성들을 필요로 하는 생성자가 자동 생성됨
final은 뒤에 오는 자료형과 변수들을 변경 불가하게 만듦
final이 없다면 생성자에 포함되지 않음final을 적용하면 속성값을 변경할 수 없기 때문에,@Setter는 의미가 없어져,Setter메소드도 사용 불가

- Controller : URL 요청을 처리
- Form : 사용자 입력 검증
프로젝트명 + Application.java 파일package com.mysite.irms;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class IrmsApplication {
public static void main(String[] args) {
SpringApplication.run(IrmsApplication.class, args);
}
}
SpringBootApplication annotation이 적용되어 있어야만 함src/main/java 디렉토리에 작성한 코드를 테스트 가능1. build.gradle
dependencies {
...
runtimeOnly 'com.h2database:h2'
}
2. src/main/resources 디렉토리의 application.properties 파일에 새로운 설정 추가
# DATABASE
spring.h2.console.enabled = true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/springdb/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled : H2 콘솔에 접속할 것인지spring.h2.console.path : H2 콘솔로 접속하기 위한 URL 경로spring.datasource.url : 데이터베이스에 접속하기 위한 경로spring.datasource.driverClassName : 데이터베이스에 접속할 때 사용하는 드라이버 클래스명 spring.datasource.username : 데이터베이스의 사용자명 (기본값인 sa로 설정)spring.datasource.password : 데이터베이스의 비밀번호3. spring.datasource.url에 설정한 경로에 해당하는 DB 파일을 만들어야 함
jdbc:h2:~/springdb/local로 설정했으므로, 코드에서 ~/springdb/에 하위 경로에 H2 데이터베이스 파일로 local.mv.db라는 파일을 생성해야 함. copy con local.mv.db 실행-> Ctrl+Z 누르기 -> Enter 키로 파일을 생성한다. (C:\Users\[username])\springdb 폴더 밑으로 local.mv.db 파일을 옮겨주었다.local.mv.db파일은 0kb로 생성되어야만 함.4. H2 콘솔을 통해 데이터베이스에 접속 가능. 로컬 서버를 재시작 후, 브라우저에서 http:localhost:8080/h2-console 에 접속

application.properties 파일에 설정한 경로대로 수정해준 후, [연결]을 클릭
1. build.gradle 파일 수정
dependencies {
...
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
2. application.properties 파일 수정
# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.ddl-auto : 엔티티 기준, 데이터의 테이블을 생성하는 규칙 설정@Id@Id annotation은 id 속성을 기본키로 지정@GeneratedValuestrategy = GenerationType.IDENTITY : 고유한 번호를 생성하는 방법을 지정GenerationType.IDENTITY : 해당 속성만 별도로 번호가 차례대로 증가시키게끔 함@ColumncolumnDefinition : 열 데이터의 유형이나 성격을 정의columnDefinition="TEXT" : 텍스트를 열 데이터로 넣을 수 있음을 의미, 글자 수를 제한할 수 없는 경우에도 사용