[Spring boot] 1. sts 설치 및 프로젝트 생성

백준호·2022년 11월 1일
0

스프링 부트

목록 보기
1/9
post-thumbnail

1. 스프링부트란?

스프링 부트는 스프링 프레임워크 기반 프로젝트를 복잡한 설정없이 쉽고 빠르게 만들어주는 라이브러리다. 기존 스프링에서는 사용자가 일일이 모든 필수 설정을 하나하나 해야했다. (web.xml, rootContext.xml, ServletContext.xml등..) 그러나 스프링 부트는 실행만 하면 스프링기반의 사용화가 가능한 애플리케이션을 쉽게 만들기 위해 단독 실행 가능하도록 지원한다.
필자가 느낀 가장 두드러진 점은 서버가 내장되어 있다는 것. 기존 스프링은 톰캣 설치를 시작으로 여러 가지 복잡한 설정이 필요했다. 그러나 스프링부트는 여러가지 설정을 덧붙여야 했던 불편함을 특별한 설정없이 Web Starter 의존성을 추가해 주는것만으로 해결한다.

스프링부트의 장점

1) 라이브러리 관리 자동화

스프링 부트의 Starter 라이브러리를 등록해 라이브러리 의존성을 손쉽게 관리할 수 있다.

2) 라이브러리 버전 자동 관리

기존 스프링에서는 라이브러리의 버전을 하나하나 직접 입력해 줘야 했다. 반면 스프링 부트는 pom.xml에 스프링 부트 버전을 입력하는 것만으로 스프링 라이브러리와 서드 파티 라이브러리들도 호환되는 버전으로 알아서 받아준다.

3) 설정의 자동화

스프링 부트는 @EnableAutoConfiguration 어노테이션 선언을 통해 스프링에서 자주 사용 했던 설정들을 알아서 등록해준다.


4) 내장 Tomcat

스프링 부트는 기본적으로 Tomcat을 내장하고 있다. @SpringBootApplication어노테이션이 선언되어있는 클래스의 main() 메소드를 실행하는 것만으로 서버를 구동시킬 수 있다. Web Starter 의존성만 추가해주면 끝이다.

5) 독립적으로 실행 가능한 JAR

웹 프로젝트라면 WAR 파일로 패키징해야하지만 스프링 부트는 내장 톰캣을 지원하기 때문에 JAR 파일로 패키징해서 웹 애플리케이션을 실행시킬 수 있다.

2.설치방법

이클립스에서는 스프링부트 플러그인을 지원하지 않는다. 이때 필요한것이 STS(Spring Tool Suit)이다.

  1. https://spring.io/tools 에서 각 운영체제에 맞는 버전을 다운받는다.
  1. SpringToolSuite4.exe를 실행한다. (이방법으로 설치가 안될 경우 반디집이나 cmd를 이용해 설치한다)
  1. 워크스페이스 경로를 설정하고 설치한다.

3.프로젝트 생성

프로젝트를 생성하기전에 두가지를 추가로 설치해준다.

1. 퀀텀DB설치

help > Install new software... 에서 >http://quantum.sourceforge.net/update-site 설치 > mysql등 db와 연결 후 북마크 설정

2. jsp 설치

help > market에서 Eclipse Enterprise Java and Web Developer Tools 3.27 설치


여기까지 했다면 프로젝트 생성이 가능하다. 이제 프로젝트 생성방법과 그에 필요한 기초 설정들을 몇가지를 알아보자.


1.new에서 new spring starter project를 클릭 후 사진과 같이 maven, war, java버전 을 맞춰준다. 프로젝트 이름과 패키지 네임을 적고 다음으로 넘어간다.
2.스프링 프로젝트의 디펜던시를 체크한다. 아래와 같이 체크 후 다음을 누른다. 해당 항목에서 체크한 것들은 pom.xml에 담긴다.
3. 생성이 완료되었다면 보이는 프로젝트 창. 아래 부연설명을 들으며 따라해보자.

pom.xml

			<!-- tomcat-embed-jasper -->
			<dependency>
   		    <groupId>org.apache.tomcat.embed</groupId>
    		<artifactId>tomcat-embed-jasper</artifactId>
    		<scope>provided</scope>
    		</dependency>
    		
    		<!-- jstl/jstl -->
			<dependency>
   			 <groupId>jstl</groupId>
   			 <artifactId>jstl</artifactId>
   			 <version>1.2</version>
			</dependency>
			
			<!-- jaxb-runtime -->
			<dependency>
			    <groupId>org.glassfish.jaxb</groupId>
			    <artifactId>jaxb-runtime</artifactId>
			    <version>2.3.1</version>
			</dependency>
			
			<!-- jaxb-api -->
			<dependency>
			    <groupId>javax.xml.bind</groupId>
			    <artifactId>jaxb-api</artifactId>
			    <version>2.3.1</version>
			</dependency>

(tomcat-embed-jasper, jstl, jaxb-runtime, jaxb-api) 설치
각 레파지토리는 https://mvnrepository.com/ 에서 찾을 수 있다.



application.properties

server.port=9001
#mysql.setting
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sist?serverTimezone=Asia/Seoul
spring.datasource.username= ID
spring.datasource.password= password

#JPA setting
#스키마 생성create:기존테이블 삭제후 생성, update:변경된부분만 반영
spring.jpa.hibernate.ddl-auto=update

#ddl생성시 고유기능 사용할지
spring.jpa.generate-ddl=true

#api호출시 실행되는 sql문을 콘솔에 보여줄지
spring.jpa.show-sql=true

#사용할 데이터베이스 종류
spring.jpa.database=mysql

#mysql상세지정
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

#jsp setting
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
spring.devtools.livereload.enabled=true

mysql, jap, jsp, ddl, api 등 설정

다음은 dto와 dao를 만들 때 필요한 것들이다.


springBootEx숫자Application.java

package boot.day1101.coffee;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@ComponentScan("패키지")
@EntityScan("패키지")//Dto 인식
@EnableJpaRepositories("패키지") //dao인식
public class SpringBootEx32Application {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootEx32Application.class, args);
	}

}

spring boot에서 controller, dto, dao 등을 읽어오려면 위와 같이 추가해준다.


Dto
package ~~~;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.CreationTimestamp;

import lombok.Data;

@Entity
@Table(name= "테이블명") // 테이블이 mysql에 만들어짐
@Data //롬북설정으로 setter getter 등 
public class ABC {

	@Id //각 엔티티 구별하도록 하는 식별아이디(시퀀스)
	@GeneratedValue(strategy= GenerationType.AUTO)
	private long num;
	
	//컬럼명 재정의
	@Column(name="A")
	private String A;
	
	@Column //안쓰면 이름 그대로 
	private int B;
	
	@Column(name="C")
	private String C;
	
	@Column(name="D")
	private String D;
	
	@CreationTimestamp //엔티티가 생성되는 시점의 시간 자동 등록
	@Column(updatable = false) //수정시 이컬럼은 수정 x
	private Timestamp guipday;
	
}

dto설정과 동시에 db테이블 생성도 가능하다. 테이블명과 엔티티, 시퀀스, 컬럼명 등 설정이 가능하다.


DaoInter
package ~~~~~ ;

import org.springframework.data.jpa.repository.JpaRepository

public interface MyCarInter extends JpaRepository<Dto, Long> {
}

jpa리파지토리를 상속받는 인터페이스를 만든다. spring과는 다르게 int대신 long값을 넘긴다.



Dao
package ~~~;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

@Repository
public class MycarDao {

	@Autowired
	MyCarInter carInter;
	
	public void insrt(ABCDto dto) {
		
	}
	
}	

@Repostory와 @autowired 설정은 기존 spring과 동일하다.




이상으로 위와 같은 설정을 기초로 jsp, controller, dao등을 통해 프로젝트를 쌓아올린다. 다음 포스팅은 boot를 사용해 간단한 crud를 구현해보자
profile
남들이 다 아는 걸 모를 수는 없지!

0개의 댓글