ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링부트+JPA 블로그 프로젝트 02 환경 설정
    스프링/스프링부트+JPA - 블로그 2021. 8. 27. 17:07

    210711 유투버 '데어프로그래밍'님 강의 참조

     

    1) 의존성 설정

    • Spring starter project

    1. Spring Boot DevTools -> 파일변경이되면 자동 재실행하여 프로젝트 갱신
    2. Lombok -> getter/setter/생성자 등 어노테이션으로 쉽게 구현 
    3. Spring Data JPA -> DB를 JPA를 통해서 만져 ORM을 기반으로 구현
    4. MySQL Driver -> MySQL과 연동해서 사용 가능
    5. Spring Security -> 보안과 관련된 라이브러리르 제공
    6. Spring Web -> WEB MVC 패턴의 기본적인 요소를 가지고 있고 내장형 톰켓을 컨테이너로 기본 탑재
    • pom.xml에 추가 라이브러리 세팅
      <!-- 시큐리티 태그 라이브러리 -->
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
      </dependency>
      
      <!-- JSP 템플릿 엔진 -->
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
      </dependency>
      
      <!-- JSTL -->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
      </dependency>
    1. 시큐리티 태그 -> 시큐리티 관련 라이브러리 사용 가능
    2. JSP 탬플릿 엔진 -> src/main 이하에서 .jsp 파일을 인식하도록 함
    3. JSTL -> JSTL 사용 가능

    2) 세팅이 끝나면 꼭 테스트 실행을 하자

    *처음 설정시에 시큐리티를 선택하면 시큐리티가 자동적으로 서버를 킬 때 블락을 한다. pom.xml에 시큐리티 관련 태그들을 전부 주석 처리 후 테스트 진행하자!

    //Controller -> 스프링이 com.cos.blog 패키지 이하로 스캔 -> 특정 어노테이션이 붙어있는 파일만 IOC해서 컨테이너로 관리 
    @RestController
    public class BlogControllerTest {
    	//http://localhost:8080/test/hello
    	@GetMapping("/test/hello")
    	public String hello() {
    		return "<h1>Hello!</h1>";
    	}
    }

    테스트 완료!

     

     

    ※ UTF-8 세팅

    • 나와있는 항목 모두 들어가서 UTF-8로 세팅

     

    3) MySQL 세팅

    -- 유저이름@아이피주소
    create user 'cos'@'%' identified by 'cos1234';
    -- ON DB이름.테이블명
    -- TO 유저이름@아이피주소
    GRANT ALL PRIVILEGES ON *.* TO 'cos'@'%';
    CREATE DATABASE blog CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    use blog;

    * DB 한글 테스트

    * 스프링 DB연동 세팅

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
        username: cos
        password: cos1234

    * 중요포인트! properties vs yml

    둘다 스프링의 외부 구성 및 속성을 application. 을 통해 세팅을 한다. properties은 스프링이 일반적으로 들고있는 형식이며 키와 접두사를 이용해서 표현한다.

    yml을 쓰는 이유는 가독성, 리스트표현, 주석의 범위 등 properties보다 이점이 많기 때문이다. 

    DB세팅 완료!

     

     

     

    환경에 대한 개념 잡기- Maven이란?

    자바로 개발을 하게되면 필요한 라이브러리를 'lib'이라는 폴더에 세팅 및 경로를 잡고 그 뒤에 빌드패스를 통해서 프로그램상에 적용을 시켜야 라이브러리를 쓸 수 가 있다. 'Maven'또한 자바용 프로젝트 관리도구이나 강점은 필요한 라이브러리를 특정 문서(pom.xml)에 정의만 해 놓으면 앞서 말한 'lib'에 대한 세팅도 필요없을 뿐더러 정의만 한다면 자동적으로 다운로드 및 라이프 사이클까지 관리를 알아서 해주는 도구이다. 즉, 'Maven'을 통해 중앙저장소가 생기고 거기에서 의존성 관리 및 라이브러리를 공유하는 파일 서버가 생긴다고 생각하면 된다. 

     

    - yml이란?

    개발시에 타 시스템들과의 연동을 하려면 문서들의 규칙 또는 포맷형태들이 같아야 연동이 된다. 기본적으로 이 시스템간 데이터를 주고 받을 때 그 데이터에 대한 포맷 약속은 xml, json, yml이 있다. 그중 가장 쉽게 발전한것이 yml. 더 자세한 사항은 아래링크를 참조하자.

    https://www.inflearn.com/questions/16184

     

    yaml파일 이란 무엇인가요 - 인프런 | 질문 & 답변

    안녕하세요 강사님 너무 질문이 많아서 죄송합니다. yaml파일 이라는 단어를 요 근래 많이 듣고 있는데 정확인 무슨 파일인가요 검색해 보지도 않고 무조건 질문을 드리는것 같아서 죄송하지만

    www.inflearn.com

    4) yml 세팅

     

    server:
      port: 8000
      servlet:
        context-path: /blog
        encoding:
          charset: UTF-8
          enabled: true
          force: true
        
    spring:
      mvc:
        view:
          prefix: /WEB-INF/views/
          suffix: .jsp
          
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
        username: cos
        password: cos1234
        
      jpa:
        open-in-view: true
        hibernate:
          ddl-auto: create
          naming:
            physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
          use-new-id-generator-mappings: false
        show-sql: true
        properties:
          hibernate.format_sql: true
    
      jackson:
        serialization:
          fail-on-empty-beans: false

    - 지금까지 세팅된것을 기반으로 간단한 스프링부트 프로세스를 알아보자.

     

    * 중요포인트

    • 'yml'의 context-path 및 prefix/suffix 의 중요성
    • 메소드는 위에 설정된 경로에 따른 파일을 리턴 -> src/main/WEB-INF/views/.....
    • prefix/suffix가 앞에 경로 및 파일 타입을 기본으로 체킹을 해주기때문에 return에는 항상 찾을 파일의 이름만 
    	@GetMapping("/")
    	public String tempJsp() {
    		//풀경로 /WEB-INF/views/test
    		return "test";
    	}

    • @RestController를 달아놓고 return에 백날천날 JSP명을 써놔도 VIEW의 콜은 일어나지 않는다 명심!!!

     

     

     

    * 중요포인트 @RequestMapping vs return URL

    • RequestMapping은 @RequestMapping("test/*")로 설정이 되어있으면 'test/'으로 시작하는 모든 url을 이 어노테이션이 붙은 컨트롤러가 처리한다는 뜻
    • @Get/@Post/@Delete/@Put 등등은 RequestMapping의 축약형 

     

Designed by Tistory.