-
spring-bootSpring 2018. 3. 26. 14:34
자주 사용하는 boot 설정
STS 를 사용중이라면
New -> Spring Starter Project 를 사용하면 편리하다
Gradle , Java8 , 그룹은 회사 도메인명, Arifact 는 프로젝트명을 기재
spring-boot + web+jpa + (h2 :테스트 할때만 사용하고 통상 MariaDB 를 사용)
만약 STS 를 사용중이지 않다면
https://start.spring.io/ 여기 사이트를 이용해서 다운받아서 사용할수도 있다.
주의: 패키징시 Jar 는 view 가 없을때 사용 , War 는 View 포함하는 경우 사용, 즉 Jar 로 선택하면 View 를 볼 수 없다.* DevTool 은 말 그대로 개발시 편의를 주는 툴이다. 따라서 운영배포시는 포함되지 않도록 Gradle or Maven 설정이 필요하다.
기선님 유튜브 강의
https://www.youtube.com/watch?v=5BhWpx7RW-w
H2 를 선택하면 어떤 설정도 필요 없이 바로 Spring-boot 실행이 된다.
DB 를 Maria 사용한다면 다음과 같은 설정이 필요하다.
--------------------------------------------------------------------------------------------------------------------------------
<pom.xml> 에 추가할 내용
<!-- mariaDB -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>1.5.7</version>
</dependency>
application.properties 파일에 설정 내용
# DB 연결 설정 (마리아DB 사용시)
spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/dhkim
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.username=test
spring.datasource.password=test1234
spring.datasource.tomcat.max-active=20
spring.datasource.tomcat.max-idel=5
spring.jpa.show-sql=true
# Hibernate ddl auto (create, create-drop, update): with "create-drop" the database
# schema will be automatically created afresh for every start of application
spring.jpa.hibernate.ddl-auto=create
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
전체 설정
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
--------------------------------------------------------------------------------------------------------------------------------
위와 같이 설정하고 spring boot 시작 테스트
: 혹시 의존성 문제가 생기면 프로젝트 폴더에 우클릭해서 maven update 해보기
프로젝트 트리
: 프로젝트 root 이하
내가 가장 익숙한 패키지 구조이니 상황에 따라 변경해서 사용.
- web : controller 모음 , swagger 로 노출할 컨트롤러는 모두 여기에
- domain : 실제 DB 와 대응하는 클래스
- model : VO 클래스 , DTO(=form) 클래스( = 검색 or 사용자 데이터 전송에 대응하는 클래스)
- service : 해당 서비스의 비지니스 로직 , 하위에 impl 폴더 만들어서 구현체 작성
- dao : CRUD 처리 , 통상 JapRepository 상속받은 인터페이스
이후 작성 순서
1. domain 아래 테이블 정의
import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="User") public class User implements Serializable { @Id @Column(name="seq") @GeneratedValue(strategy = GenerationType.AUTO) private long seq; @Column(name="name",length=30) private String name; ... getter setter.. }
2. dao 작성
import org.springframework.data.jpa.repository.JpaRepository; public interface UserDao extends JpaRepository<User, long> { }
3. 컨트롤러 작성
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("/{index}")
public User get(HttpServletRequest req , @PathVariable long index) {
return userDao.findOne(index);
}
@PostMapping("/")
public User create(HttpServletRequest req , User user) {
return userDao.save(user);
}
}
여기까지 작성하고 post 로 submit 테스트 및 get 조회 테스트
http://localhost:8080/user post로
http://localhost:8080/user/1 하면 json 리턴 되어야함
그외 다양한 spring-boot 샘플 코드 링크
'Spring' 카테고리의 다른 글
Spring-boot , thymeleaf 사용하기 (1) 2019.09.08 spring boot 배너만들기 (0) 2018.07.13 spring batch (0) 2016.01.13 Spring MVC view-controller 설정 시 redirection 하는 방법 (0) 2015.07.07 Spring MVC + Sitemesh 사용하기 (1) 2009.12.23