Spring Framework/Spring boot #2: 34개의 글
| 스프링 게시판 만들기 - 부트로 쉽게 구현한 Spring 게시판 예제 git repository는 여기를 클릭하시면 됩니다. 스프링 게시판은 스프링 MVC로 스프링 부트에서 밀고있는 툴인 Thymeleaf를 사용하여 쉽게 만들 수 있습니다. REST API + SPA( React, Vue 등 )으로 만들 수 있지만 간단한 커뮤니티 사이트 구현을 위해서는 조금 과한 기술스택을 사용하는 것이 아닌 지 생각해 봐야 합니다. 스프링 MVC를 사용했을 때의 데이터 흐름은 아래의 링크를 참고하여 보시면 될 것 같습니다. [Spring Framework/Spring 입문 - 개념 및 핵심] - [Spring] 스프링(Spring) MVC 아키텍처/설계 구조 위에서 JSP를 Thymeleaf라고 생각하고 읽으시면 ..
* 아래의 모든 코드는 깃 저장소에 올려놨습니다. 참고 부탁드려요 * OAuth란? OAuth(Open Authorization)는 토큰 기반의 인증 및 권한을 위한 표준 프로토콜입니다. OAuth와 같은 인증 프로토콜을 통해 유저의 정보를 페이스북, 구글, 카카오 등의 서비스에서 제공받을 수 있고 이 정보를 기반으로 어플리케이션 사용자에게 로그인이나 다른 여러 기능들을 손쉽게 제공할 수 있습니다. 자세한 내용은 여기를 참조하시면 좋을 것 같습니다. 스프링 부트로 OAuth2를 통한 로그인 기능 스프링 부트로 OAuth2를 통한 로그인 기능을 제공할 수 있습니다. 여기서는 페이스북, 구글, 카카오에서 제공하는 정보를 통해 사용자가 웹페이지에 손쉽게 로그인하는 기능을 구현할 것입니다. 스프링부트로 해당 기..
| 스프링 부트 Actuator 스프링 부트 어플리케이션은 actuator라는 모듈을 통해 어플리케이션 상태를 종합적으로 정리해서 제공해줍니다. 이를 통해 스프링 부트 어플리케이션 운영을 손쉽게 할 수 있죠. actuator는 다양한 Endpoints(사용자나 디바이스같은 IT 서비스의 최종 목적지)를 제공하여 이 다양한 Endpoints를 통해 어플리케이션의 운영 정보를 알 수 있습니다. | Actuator 접근하기 프로젝트 구조 +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---actuator | | | ActuatorApplication.java | | | | | \---resources | | | applicati..
| RestTemplate, WebClient Spring 기반 프로젝트를 진행하면 컴포넌트 내부에서 URL을 요청해야하는 경우가 생깁니다. Spring에서는 Http 요청을 간단하게 이용할 수 있도록 Blocking I/O 기반의 RestTemplate, Non-Blocking I/O 기반의 WebClient 모듈을 제공하고 있습니다. | RestTemplate 예제 프로젝트 구조 +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---webclient | | | HelloController.java | | | RestRunner.java | | | WebclientApplication.java | | | | | \---re..
| 스프링 부트 시큐리티 커스터마이징 스프링 부트에서는 사용자의 요청에 따라 어플리케이션 개발자가 인증 절차를 상황에 맞게 설정할 수 있습니다. 프로젝트 구조 +---src | +---main | | +---java | | | \---com | | | \---example | | | \---springsecurity | | | Security.java | | | SimpleController.java | | | SpringSecurityApplication.java | | | | | \---resources | | | application.properties | | | | | +---static | | \---templates | | hello.html | | index.html | | my.html 의..
| 스프링 부트 시큐리티 스프링 부트에서는 웹 접근 시 로그인 같은 인증과정을 쉽게 구현할 수 있도록 시큐리티 모듈을 제공합니다. | 스프링 부트 시큐리티 연동하기 의존성 추가 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-security org.springframework.security spring-security-test ${spring-security.version} test 프로젝트..
| 몽고DB란? 몽고DB는 데이터 객체들이 컬렉션 내부에서 독립된 문서로 저장되는, 문서 모델 기반(Document-Based)으로 하는 NoSQL 데이터베이스입니다. 컬렉션이라는 것은 몽고DB에서 용도가 같거나 유사한 문서들을 그룹으로 묶는 것을 말합니다. 그리고 이 컬렉션들은 기존 SQL의 데이터베이스의 테이블처럼 비슷하게 동작합니다. 몽고DB의 문서 모델은 JSON 기반 포맷입니다. 따라서 유여하게 데이터를 즐의하고 조작할 수 있습니다. | 스프링 부트 몽고DB 연동하기 의존성 설정 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframewor..
| 레디스(Redis)란? 레디스는 Key-Value 기반인 인메모리 데이터 저장소로서 주로 캐쉬 솔루션으로 쓰이고 있는 오픈 소스 프로젝트입니다. 레디스를 이용하게 되면 JVM위에서 동작하지 않고 어떤 데이터를 캐싱할 수 있습니다. 따라서 GC 대상이 되지 않고 그로 인한 오버헤드가 줄어드는 장점이 있습니다. | 스프링 부트 레디스 연동하기 의존성 추가 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-data-redis 레디스 도커 실행 docker run -p 6379:6379 --na..
| Flyway란? Flyway는 오픈소스 마이그레이션 툴입니다. 자바나 c++같은 프로그램의 소스 코드는 svn, git과 같은 형상관리 툴로 쉽게 관리할 수 있지만 테이블의 스키마나 데이터는 위와 같은 툴로 변경이력을 관리할 수 없습니다. 따라서 SQL 스크립트문을 실행하거나 직접 DB 콘솔이나 Toad 같은 툴을 통해 직접 수동으로 처리해줘야 하는 단점이 있습니다. Flyway는 버전 관리 목적인 SCHEMA_VERSION 테이블을 통해 SQL 스크립트의 변화를 추적하면서 자동적으로 관리하는 방법으로 위와 같은 문제를 해결합니다. | 스프링 부트에서 Flyway 사용하기 의존성 추가 org.flywaydb flyway-core 프로젝트 구조 ├── pom.xml ├── spring-boot-tuto..
이전 포스팅에서 쓰던 테스트 및 소스 코드를 사용합니다. [Spring Framework/Spring boot2] - [Spring Boot #24] 스프링 부트 Spring-Data-JPA 연동 | 스프링 부트 데이터베이스 초기화 실제 인메모리 DB가 아닌 일반 디스크 기반 DB에서는 Spring-Data-JPA에 의해 생성된 테이블과 데이터는 초기화되지 않고 디스크에 저장됩니다. 만일 실제 개발 혹은 배포 전에 실제 테스트를 하기 위한 목적으로 데이터 베이스를 자동적으로 초기화 하고자 한다면 그에 관련된 설정을 따로 스프링 부트 설정파일에 명시해야합니다. | 데이터베이스 초기화 설정 파일 # application.properties spring.datasource.hikari.maximum-pool-..