Learn & Record
Spring Boot (Spring boot, 프로젝트 생성방식, 프로젝트 생성, 프로젝트 실행, Spring Data JPA를 위한 설정, 스프링부트에서 웹개발, Thymeleaf) 본문
Spring Boot (Spring boot, 프로젝트 생성방식, 프로젝트 생성, 프로젝트 실행, Spring Data JPA를 위한 설정, 스프링부트에서 웹개발, Thymeleaf)
Walker_ 2024. 5. 7. 10:551. Spring boot
- 다양한 설정이 내장돼있음
- 스프링과 기존 개념이 거의 그대로 넘어옴
2. 프로젝트 생성방식
- spring Intializr를 이용한 자동 생성
- Maven이나 Gradle을 이용한 직접생성
하지만 거의 대부분 spring Intializr에서 생성
3. 프로젝트 생성
- 인텔리제이 New project 클릭
- 위처럼 설정 후 Next
- 오른쪽 칸에 항목들 추가 후 Create
- 메인 함수있는 파일에 파일들, 생성해야 함
4. 프로젝트 실행
- 스프링 부트는 이미 서버를 내장한 상태에서 만들어지기 때문에 따로 서버 설정 안 해도 됨
- 실행 버튼 클릭 후 에러 확인
- 데이터베이스 설정이 안돼서 임
- application.properties에 설정 추가
- 다른 프로젝트에서 8080을 사용할 때, 포트 번호를 변경 가능
- run editConfigurations > Modify options
- 위에 두 항목에서 Update classes and resources를 추가하고 OK
- 프로젝트 재실행 시간 감소, 자동으로 업데이트 지원
// lombok을 테스트 환경에서도 사용
testCompileOnly('org.projectlombok:lombok')
testAnnotationProcessor('org.projectlombok:lombok')
- build.gradle에 lombok 테스트 환경 시 코드 추가 후 > 코끼리 버튼
logging.level.org.springframework=info
logging.level.com.example.spring_boot_project=debug
- 스프링부트는 기본적으로 Log4j2가 있기에 라이브러리 추가는 안해도 되고
- application.properties에 위 코드 두줄 추가
- DB 위에 적은 설정에 맞게 DB 연동
- Test에 DataSourceTest 클래스 파일 추가
package com.example.spring_boot_project;
import lombok.Cleanup;
import lombok.extern.log4j.Log4j2;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@Log4j2
@SpringBootTest
public class DataSourceTest {
@Autowired
private DataSource dataSource;
@Test
public void conncetion() throws SQLException {
@Cleanup Connection connection = dataSource.getConnection();
log.info(connection);
Assertions.assertNotNull(connection);
}
}
- DataSourceTest 파일에 위 코드 추가
- 위처럼 나오면 데이터베이스 설저이 제대로 잡혔다는 뜻
5. Spring Data JPA를 위한 설정
spring.jpa.hibernate.ddl-auto=update
spirng.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
- applicatiion.properties에 위 코드 3줄 추가
6. 스프링부트에서 웹 개발
- 메인 파일있는 위치에 controller 패키지 생성 후 파일 생성
package com.example.spring_boot_project.controller;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
@Log4j2
public class SampleController {
@GetMapping("/hello")
public void hello(Model model) {
log.info("hello...");
model.addAttribute("msg", "Hello World");
}
}
- controller 파일에 위 코드 추가
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>
- 생성한 html 파일에 위 코드 추가

- 프로젝트 실행 > localhost:8080/hello 접속해서 화면 확인

- controller 폴더에 SamplerJSONController 파일 생성
package com.example.spring_boot_project.controller;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Log4j2
public class SampleJSONControlloer {
@GetMapping("/helloArr")
public String[] helloArr() {
log.info("HelloArr...");
return new String[] {"AAA", "BBB", "CCC"};
}
}
- 생성된 파일에 위 코드 추가

- localhost:8080/helloArr에 접속 후 JSON 파일 출력 확인
7. Thymeleaf
- 스프링과 마찬가지로 스프링 부트도 다양한 뷰 view 관련 기술을 적용할 수 있음
- Thymeleaf는 JSP를 대신하는 목적을 작성된 라이브러이므로, JSP에서 필요한 기능들을 Thymeleaf로 구성해 봄.
- 1) 인텔리제이 설정

- Settings > Thymeleaf 검색 후 > 3번째 체크 해제
8. Thymeleaf 출력
package com.example.spring_boot_project.controller;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Arrays;
import java.util.List;
@Controller
@Log4j2
public class SampleController {
@GetMapping("/hello")
public void hello(Model model) {
log.info("hello...");
model.addAttribute("msg", "Hello World");
}
@GetMapping("/ex/ex1")
public void ex1(Model model) {
List<String> list = Arrays.asList("AAA", "BBB", "CCC", "DDD");
model.addAttribute("list", list);
}
}
- SampleController에 위 코드 추가

- templates 패키지에 ex 패키지와 ex1.html 생성
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- inlining 사용 -->
<h4>[[${list}]]</h4>
<hr>
<!-- 'th:' 속성 사용 -->
<h4 th:text="${list}"></h4>
</body>
</html>
- 생성 ex1 파일에 위 코드 추가

- URL 접속해서 출력 확인
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)