스프링 부트란? 제품 수준의 스프링 기반 애플리케이션을 만들 때 빠르고 쉽게 만들 수 있게 도와주는 것 사용자가 일일히 모든 설정을 직접 하지 않도록, 많이 쓰이는 설정을 제공해준다.(필요시 설정들을 직접 바꿔 줄 수 있다.) code generation이 없고, XML도 사용하지 않는다. java 8 이상부터 사용가능하다.
스프링 부트 프로젝트 생성 intellij를 실행하여 create new project를 누른다 스크린샷 2020-02-02 오전 12.02.47.png Spring Initializr, Maven, Gradle 중 하나를 선택한다.(Maven으로 진행하겠다.) 스크린샷 2020-02-02 오전 12.03.39.png...
스프링 부트 프로젝트 구조 메이븐 기본 프로젝트 구조와 동일하다. src - main - java: 자바 소스코드 스크린샷 2020-02-02 오전 12.56.06.png src - main - resources: 자바 코드를 제외한 모든 것 스크린샷 2020-02-02 오전 12.56.24.png resources...
스프링 부트는 여러 의존성들을 관리해준다. pom.xml에 parent로 설정되어 있는 spring-boot-starter-parent의 부모 spring-boot-dependencies의 를 살펴보면 관리해주는 의존성들의 version이 나와있는 것을 볼 수 있다. 따라서 우리는 스프링부트가 관리해주는 의존성은 pom.xml에서 version을 명시해...
메인 클래스에 붙어 있는 @SpringBootApplication은 크게 3가지가 합쳐진 것이라고 생각할 수 있다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 스프링 부트 어플리케이션은 Bean을 2번 등록한다. 처음에 ComponentScan으로 등록하고, 그 후에 EnableA...
HTTPS HTTPS(SSL프로토콜 위에서 돌아가는 프로토콜)을 사용하려면 키스토어(인증서)를 만들어야한다. 티미널을 열어 프로젝트 위치에서 아래의 명령어를 입력한다. `keytool -genkey -alias spring -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validi...
spring boot maven plugin에 관한 내용이다. 스프링부트 프로젝트를 만들고 개발을 할 때는 intellij에서 실행시켜서 확인하면 된다. 그러나 이 어플리케이션을 배포 or 도커 이미지로 만들 때는 JAR 패키지로 패키징하여 JAR파일을 실행하는 방법이 유용하게 사용된다. 먼저, mvn clean을 해준다.(target 하위를 모두 비...
스프링부트 프로젝트 실행하는 법 static 메서드를 쓰는 방법 커스터마이징을 할 수 없다. 스크린샷 2020-02-05 오전 3.16.57.png SpringApplication 위의 코드와 같지만, 분해하여 커스터마이징 가능하게 해준다. 스크린샷 2020-02-05 오전 3.19.02.png springAppli...
외부 설정 파일 이란? 애플리케이션에서 사용하는 여러가지 설정 값들을 애플리케이션의 밖이나 안에 정의할 수 있는 기능을 말한다. application.properties 이 파일은 스프링부트가 애플리케이션을 구동할 때 자동으로 로딩하는 파일이다. key - value 형식으로 값을 정의하면 애플리케이션에서 참조하여 사용할 수 있다. 스크린샷 ...
@ConfigurationProperties properties 파일의 key 값이 아래와 같이 같은 값으로 시작할 때, 그것을 묶어서 Bean으로 등록할 수 있다. 스크린샷 2020-02-06 오전 12.38.34.png 먼저 @ConfigurationProperties 어노테이션을 붙여 클래스를 만들어 준다. key값이 my로 시작...
프로파일 spring framework에서 제공해주는 기능.(https://velog.io/@max9106/Spring-ApplicationContext%EC%9D%98-%EA%B8%B0%EB%8A%A5%EB%93%A4-jnk5npcm3d) 특정한 프로파일에서만 특정한 Bean을 등록하고 싶다거나, 애플리케이션의 동작을 특정 프로파일 일때 Bean설정을 ...
스프링 부트 로깅 원리 스프링 부트는 기본적으로 commons logging을 사용한다. 그렇지만 보통 SLF4j를 사용한다.(리소스 코드에서도 마찬가지로 SLF4j를 쓰면 된다.) Commons Logging과 SLF4j는 로거 퍼서드이다. 실제로 로깅을 하는 것이 아니라, 로거 API들을 추상화 해놓은 인터페이스이다. 이런 로거 퍼서드를 사용하면, ...
테스트란? 테스트 파일에는 @SpringBootTest 어노테이션이 붙어있는데, @SpringBootTest 어노테이션은 @SpringBootApplication 어노테이션이 붙어있는 스프링 메인 애플리케이션을 찾아간다. 그리고 메인에서 부터 시작하는 모든 Bean 스캔을 한다. 그 모든 것을 테스트용 애플리케이션 context를 만들면서 모든 Bean을...
Spring-Boot-Devtools란? 스프링 부트가 제공하는 optional한 tool이다. 기본적으로 적용되는 것은 아니다. pom.xml에 의존성 추가를 해줘야한다. devtools를 의존성 추가해주면, 기본적으로 제공되는 properties들이 바뀌는 것이 있다. 대표적으로 캐쉬관련된 항목들을 false로 바꿔준다.(그 외에도 여러가지가 있...
스프링부트는 기본 설정에 의해, 기본적으로 웹 mvc를 바로 사용할 수 있다.(자동 설정 파일이 적용되었기 때문) HttpMessageConverters 스프링 프레임워크에서 제공하는 인터페이스이며 spring MVC의 일부분이다. HTTP 요청 본문을 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경할 때 사용한다. @RequestBody / ...
ContentNegotiatingViewResolver ViewResolver 중의 하나로, 들어오는 요청의 accept header(브라우저 또는 클라이언트가 어떠한 타입의 본문을 응답을 원한다고 서버에 알려주는 것)에 따라 응답이 달라진다. 어떠한 요청이 들어오면 그 요청의 응답을 만들 수 있는 모든 view를 찾아내고, 최종적으로 accept hea...
정적 리소스 우리가 서버에서 어떤 작업을 처리해서 요청이 들어왔을 때, 뷰를 만들어 내는 것이 아니라, 웹 브라우저나 클라이언트에서 요청이 들어왔을 때, 그것에 대한 리소스가 이미 만들어져있고, 만들어져 있는 리소스를 그냥 보내주면 되는 것이다. 기본적으로 아래 위치에 있는 리소스들은 /**요청에 mapping되어 제공된다. classpath:/stat...
웹 JAR이란? 클라이언트에서 사용하는 Reactjs, Angularjs, vuejs, jquery 등을 JAR 파일로 스프링부트에 추가해 줄 수 있다. 그 JAR 파일에 있는 css나 java script를 참조할 수 있다. pom.xml에 의존성 추가해주면 사용 할 수 있다. 스프링 부트는 웹 JAR의 기본 매핑을 제공한다. /webjars/**...
index 페이지 index 페이지는 애플리케이션을 root로 요청했을 때의 페이지다. 즉, localhost:8080 으로 호출했을 때 처음 뜨는 페이지를 말한다. 2가지 방법으로 index 페이지를 생성할 수 있다. 정적 페이지로 생성하는 방법 저번에 공부한
동적 컨텐츠를 생성하는 방법이다. view만 만드는데 사용하는 것이 아니다. 여러 가지 용도(code generation, email 등)로 사용할 수 있지만, 주로 사용하는 기능이 view를 만드는 것이다.
html을 단일 테스트하기 위한 tool이다. webClient를 만들어서 사용한다. webClient로 특정 페이지에 요청을 보내고 결과를 받아서 HtmlPage라는 인터페이스를 통해 xml, text 등 여러가지로 가져올 수 있다.
스프링 부트에는 기본적으로 error handler가 들어가 있다.index페이지가 없을 때, localhost:8080으로 요청 시, 보이는 화면이 기본 error handler가 처리해준 결과이다.
Spring HATEOAS란? Hypermedia As The Engine Of Application State를 구현하기 위해 편리한 기능들을 제공해주는 tool(라이브러리)이다. Hypermedia As The Engine Of Application State는
Cross-Origin Resource Sharing(서로 다른 origin끼리 리소스를 공유할 수 있는 기능을 제공하는 표준이다.)의 약자이다. SOP(Single-Origin Policy: 같은 Origin에만 요청을 보낼 수 있다.)를 우회하기 위한 표준 기술이다
스프링부트가 지원하는 인메모리 데이터베이스는 3가지가 있다.1\. H22\. HSQL3\. DerbySpring-JDBC가 클래스패스에 있으면 자동 설정이 필요한 빈을 설정 해준다.(DataSource, jdbcTemplate)pom.xml에 jdbc와 h2 의존성을
DBCP는 DataBase Connection Pool이다. connection을 여러개 미리 만들어 놓고 필요할 때 마다 가져다 쓰는 것이다.몇 개를 만들어놓을지, 얼마나 응답이 없으면 error를 던질지 등의 여러가지 설정을 할 수 있다.DBCP가 애플리케이션 성능
pom.xml에 postgre 드라이버 의존성을 추가해준다.docker를 사용해 postgresql을 설치한다.컨테이너 안의 5432포트를 localhost의 5432포트로 mapping하고, postgresql 정보를 설정해준다.postgre 서버에 접근하려면, 아래
Object Relational Mapping의 약자로, 객체와 relational(테이블)을 mapping 할 때 발생하는 개념적인 불일치를 해결하는 프레임워크이다. 객체는 크기가 다양한 여러 프로퍼티를 가지고있지만, 테이블은 한정되어 있기 때문에, 어떻게 객체를 테
application.properties에서 spring.jpa.hibernate.ddl-auto= 의 속성 값을 update, create-drop, create 3개 중에 하나로 설정하면 자동으로 스키마가 생성된다.update는 기존 데이터를 유지해 줄 수 있지만,
스키마를 체계적으로 버전 관리하는 것이다. DB 스키마와, 데이터에 일어나는 변경을 sql파일로 관리하는 것이다.Flyway와 Liquibase가 있는데 Flyway를 사용해보겠다.의존성을 추가해준다.그 후, resources 밑에 db/migration 디렉토리를 만
스프링부트 프로젝트를 새로 생성한다.redis 의존성을 추가해준다.도커를 사용하여 redis를 설치 & 실행 해준다.아래의 명령어로 redis를 설치한다.docker run -p 6379:6379 --name redis_boot -d redis포트번호 6379번에 이름
mongoDB는 json기반의 도큐먼트 데이터베이스라 스키마가 존재하지 않는다.새로 프로젝트를 생성해주고 아래의 의존성을 추가해준다.그 후, docker를 사용하여 mongoDB를 설치하고 실행해보겠다.아래의 명령어로 mongoDB를 설치한다.docker run -p
노드들과 연관관계를 표현하는데 있어서 풍부한 기능들을 제공하는 그래프 데이터베이스이다.새로운 프로젝트를 만들어주고 아래의 의존성을 추가해준다.버전마다 하위호환성은 좋지않다.docker로 neo4j를 설치하고 실행한다.docker run -p 7474:7474 -p 76
thymeleaf, web의존성을 넣어, 새로운 프로젝트를 생성해준다.Controller를 하나 만들어주고, 간단한 GetMapping 2개를 추가해준다.resources의 templates에 3개의 html 페이지를 추가해준다.index 페이지에는 각각 hello.h
이전 포스팅(https://velog.io/@max9106/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0)에서 말한 것 처럼, 기본 스프링 시큐리티는 모든 요청에 대해
REST 클라이언트는 스프링 프레임워크가 제공하는 것이고, 스프링부트는 REST 클라이언트를 쉽게 사용할 수 있도록 Bean을 등록해준다.RestTemplateBuilder, WebClient.Builder를 Bean으로 등록해준다. 그래서 저 Builder를 주입받아
전 포스팅 코드를 그대로 사용한다.(https://velog.io/@max9106/Spring-Boot-%EC%8A%A4%ED%94%84%EB%A7%81-Rest-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8)이렇게하면 모든
스프링 부트는 actuator라는 모듈을 사용한다. 이것은 애플리케이션 운영 중에 유용한 정보를 제공해준다.엔드포인트라는 것을 통하여 제공해준다.web모듈을 추가하여 새로운 프로젝트를 만들어 준다.동작환경만 보기 위해 따로 컨트롤러를 만들지는 않고, 메인에서 처리하겠다