[Spring] 스프링 부트

SANG JONG CHOI·2022년 10월 28일
0

Spring

목록 보기
3/11

스프링 부트 (Spring Boot)

스프링 프레임워크를 사용하는 프로젝트를 아주 간편하게 설정할 수 있는 스프링 프레임워크의 서브프로젝트

스프링 부트의 특징

  • XML 기반 설정 과정 없이 간단히 프로젝트를 시작할 수 있음
  • 메이븐의 pom.xml 파일에 의존성 라이브러리의 버전을 일일이 지정하지 않아도 됨 (스프링 부트가 권장 버전 관리)
  • 단독 실행되는 스프링 애플리케이션 구현 가능
  • 프로젝트 환경 구축에 필요한 서버 외적인 툴들이 내장되어 있어서 별도 설치 필요 없음
    • 톰캣 내장되어 있음

스프링 부트 프로젝트 생성 과정

1. 스프링 부트 프로젝트 생성

  • File / New . Spring Starter Project
  • (1) 프로젝트명 / Group / Artifact / 패키지명
  • (2) Dependencies 선택
    • SQL : JDBC API / MyBatis Framework / MySQL Driver
    • Web : Spring Web
    • Java Version : 11
    • Package : War
스크린샷 2022-07-12 오전 10 33 27

2. 프로젝트 생성 후 확인

  • (1) pom.xml 내용 확인

    • java.version / jdbc / mysql-connector / tomcat
  • (2) 자동 생성된 클래스 파일 확인

  • ServletInitializer.java

    • 스프링 부트 애플리케이션을 web.xml 없이 톰캣에서 실행하게 해주는 클래스
    • 따라서 스프링 부트에는 web.xml, context.xml 설정 파일 없음
  • …….Application.java

    • @SpringBootApplication 붙어 있음
    • 스프링 부트 애플리케이션으로 설정하는 어노테이션
    • main() 메소드 포함
스크린샷 2022-07-12 오전 10 33 59 스크린샷 2022-07-12 오전 10 34 02

3. 스프링 설정 파일

  • application.properties 파일이 자동 생성됨
  • (내용이 없는 빈 파일로 생성)
  • 추가할 내용
    • 포트 번호
    • 데이터베이스 연결 정보
    • mapper.xml 위치 지정
      • src/main/resources 파일에 생성할 것임
  • 여기서 컨트롤러 추가하고 (“/”) 실행시켜서 오류 있는지 확인

application.properties db 설정

src -> main -> resources -> application.properties

본인의 Db 설정에 맞춰서 입력

application.properties에서 한글을 사용하지 않으면 주석은 #을 사용

스크린샷 2022-07-12 오전 11 23 29

소스 코드

# 포트 번호
server.port=8080
  
# db connection
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  #db driver
spring.datasource.url=jdbc:mysql: # localhost:3306/springdb
spring.datasource.username=root  # db 아이디 
spring.datasource.password=1234  # db 패스워드

src -> main -> java -> (프로젝트 생성 시 입력한 패키지) -> 클래스 생성 -> 클래스 명 HelloController 추가

스크린샷 2022-07-12 오전 11 20 00

warn 오류는 패키지 mapper를 설정하지 않아 나는 오류입니다.

이는 후에 패키지 mapper 설정을 하면 해결됩니다.

정상적으로 되었다면 결과는 아래와 같습니다

스크린샷 2022-07-12 오전 11 17 08

Port 8080 is already in use

가장 자주 나는 톰캣 에러입니다.

포트번호 8080을 이미 사용중라 에러가 나는 것입니다.

포트번호 8080을 점유중인 프로세스를 찾아 제거한 후 다시 실행하면 됩니다.

맥의 명령어입니다.

sudo lsof -i: 포트번호

포트번호를 조회하는 명령어입니다.

명령어 입력 후 계정 비밀번호를 입력하면 포트번호 8080을 점유하고 있는 프로세스가 나옵니다.

kill : 점유하고 있는 프로세스 번호

스크린샷 2022-07-12 오전 11 58 42

저는 1993 프로세스가 8080을 점유하고 있어 kill 하였습니다.


4. JSP 뷰 설정

  • 스프링 부트는 JSP 뷰가 기본이 아니기 때문에
  • JSP 뷰를 사용할 경우 추가 설정 필요
  • application.properties 파일에 JSP 설정 추가
  • pom.xml 의존성 라이브러리 추가
  • src/main/webapp 폴더에 WEB-INF/views 폴더 추가
  • hello.jsp 생성하고
  • 컨트롤러에서 @RequestMapping 추가해서 hello.jsp 실행되는지 확인
  • 스프링 부트에서 리소스 파일 경로 확인

JSP 설정

스크린샷 2022-07-12 오전 11 33 10

jsp view 소스코드

# jsp view 
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

pom.xml 의존성 추가

pom.xml 클릭 후 하단 메뉴 Dependencies 클릭 Add

스크린샷 2022-07-12 오전 11 34 20
javax.servlet jstl
스크린샷 2022-07-12 오전 11 35 25

검색 결과 로딩이 오래 걸리나 창이 나오지 않는 분들은 아래 소스 코드를

pom.xml의 소스의 </dependencies>안에 추가하시면 됩니다.

소스 코드

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
</dependency>

tomcat-embed-jasper
스크린샷 2022-07-12 오전 11 36 51

소스 코드

<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

입력이 잘 되었다면 아래 결과창과 같습니다.

dependency_result
jsp view 경로 설정에 맞게 파일을 생성합니다.

src -> main -> webapp -> 폴더 생성(WEB INF) -> 폴더 생성(views)

스크린샷 2022-07-12 오전 11 39 43

view 폴더 안에 jsp 파일 추가 (파일명 :hello.jsp)

스크린샷 2022-07-12 오후 12 09 32

파일을 생성했으니 컨트롤러에서 hello 페이지로 이동하는 @RequestMappong을 작성합니다.

스크린샷 2022-07-12 오후 12 10 27

소스 코드

@RequestMapping("/hello")
	public String hello(Model model){
		model.addAttribute("message","안녕하세요");
		return "hello"; // 뷰 페이지 이름 : hello.jsp
}

실행 : Run As / Spring Boot App

웹 브라우저에 url 직접 입력 : http://localhost:8080/hello

아래와 같은 결과 창이 나타납니다.

image-20220713141551550

5. DB 연동 CRUD 기능 구현

  • spring_mvc_mybatis 에서 product 코드는 그대로 사용 (일부 경로 수정)
  • 파일 위치 주의
(1) 패키지 생성
  • controller / dao / model / service
  • 클래스 / 인터페이스 파일 (mapper 제외)
    • VO / service / DAO / Controller
  • 복사 시 주의! - 이전 패키지 import 삭제할 것
(2) mapper 파일 폴더 생성
  • src/main/resources 폴더에 mappers 폴더 생성하고, 그 안에 product 폴더 생성

  • product 폴더 안에 ProductMapper.xml 파일 복사

    • DAO/VO 경로 수정
  • application.properties에 mapper 위치 설정

  • mybatis.mapper-locations=classpath:mappers/**/*.xml
(3) …Application.java 클래스에 추가
  • 컴포넌트 클래스(Controller와 Service)에 대해 추가
  • @ComponentScan
  • @MapperScan
  • 추가하지 않으면 bean이 없다는 오류 발생
image-20220713142558283
(4) view 페이지 복사
  • product 폴더 복사
  • index.jsp 복사
  • 모든 경로 (요청 경로) 변경
image-20220713141823339
(5) HelloController 삭제
  • (삭제) 또는 내용 주석 처리)
(6) js 폴더 생성
  • src/main/resources/static 폴더에 js 폴더 복사
(7) 외부 경로 설정 : 상품 이미지 출력

WebConfig 클래스 생성

  • MVC 프로젝트에서 spring-context.xml에 설정한 내용 추가
<resources mapping="/images/**" location="file:///C:/springWorkspace/product_images/" />
  • WebMvcConfigurer 인터페이스 구현
  • 맵핑 이름과 이미지 위치 설정
image-20220713141833378
profile
No error, No gain

0개의 댓글

관련 채용 정보