블로그 패키지 생성하기

  • 라이브러리 관리는 Maven
  • jar 파일로 패키징
  • 자바 버전 8

 

 

의존성 설정하기

6가지 라이브러리 세팅하기 

  • Spring Boot DevTools : 프로젝트에 파일이 변경됐을때 자동 재시작을 해줌
  • Lombok : getter,setter,생성자를 어노테이션을 통해 자동생성
  • Spring Data JPA : JPA를 통해서 DB를 만듬
  • MySQL Driver : 
  • Spring Security : 보안적인 여러가지 기능제공
  • Spring Web : 어노테이션을 쓰기위함, 프로젝트 내부에 톰캣을 기본탑재하고 있음

( OAuth2 Client 는 카카오 로그인 네이버 로그인에 도움주는 라이브러리이다.  쓰지 않고 직접 구현해보자 )

 

 

 

+ 추가 라이브러리

 

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>

 

jsp 템플릿 엔진은 기본적으로 지원하지 않는다.  그래서 jsp를 src-main 에 파일을 따로 넣어줘야한다

넣은 jsp 파일을 인식하게 하려면 jasper 라이브러리가 필요하다

 

 

모든 시큐리티 라이브러리, mysql 라이브러리는 지금 쓸게 아니라서 주석 처리를 해준다.

 

 


 

※ 절대하면 안되는 패키지 생성법

 

com.cos.blog.test  com.cos.test 만드는 것 안됨

 

 

왜?

class Test() {
   void hello() {           //  메서드 호출
       A  a = new A();    // a 변수는 hello 메서드가 호출이 끝나면 사라짐 = 지역변수 (다른클래스에 공유할 수 없음.)
    }                             //  메서드 호출 끝
}

new 하면 a 변수를 가르키는 heap 공간을 만든다. 또 new 하면 heap공간이 계속 생기고 또 생기고 결국 관리하기 힘듬

그래서 

스프링 컨테이너에  a 변수 , b변수 등등 넣어서 관리를 하고 내가 가져가서 쓴다 =  이것이 '제어의 역전'

 

제어의 역전은 컴퍼넌스 스캔을 한다.

 

컴퍼넌스 스캔이란

패키지 이하를 모두 스캔하여 필요한 것들을 메모리에 로드(IoC)하고 싱글톤 패턴으로 관리하는 것

메모리에 로드 = 스프링 컨테이너에 넣은 모든 객체의 변수를 스캔하여 띄우는 것

 

예를 들어 

com.cos.blog 패키지 이하만 스캔해서 패키지 스캔을 하고 컨테이너에 변수를 띄운다. 

com.cos.blog.controller
                     .resource 
                     .domain

 

com.cos.test 는 com.cos.blog 패키지 이하가 아니라서 스캔을 하지않고 메모리를 안띄우게 됨

 

 

하지만 스프링이 com.cos.blog 패키지 이하를 스캔하여 모든 파일을 메모리에 new하는 것은 아니다.

특정 어노테이션이 붙어있는 클래스 파일만 new해서 스프링 컨테이너에 관리를 해준다.

 

 

 

com.cos.blog.test 패키지를 만들어보자

[ BlogControllerTest ]

@RestController 
public class BlogControllerTest(){

	@GetMapping("/test/hello")
	public String hello(){
    		return "<h1>hello spring</h1>";
    }
}

 

http://localhost:8080/test/hello 를 치면 hello spring 이 화면에 뜬다.

 


오류가 난다면

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

 

pom.xml 에 가서 jpa 라이브러리 주석처리해주면 오류해결

 

반응형
LIST

+ Recent posts