spring boot: 104개의 글
| 스프링 부트 시큐리티 커스터마이징 스프링 부트에서는 사용자의 요청에 따라 어플리케이션 개발자가 인증 절차를 상황에 맞게 설정할 수 있습니다. 프로젝트 구조 +---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-..
| Spring-Data-JPA란 ORM은 "관계형 데이터베이스의 구조화된 데이터와 자바와 같은 객체 지향 언어 간의 구조적 불일치를 어떻게 해소할 수 있을까"라는 질문에서 나온 객체-관계 매핑 프레임워크입니다. 즉, 객체와 릴레이션을 매핑할 때 생기는 다양한 문제들을 해결할 수 있는 솔루션이라 생각하면 됩니다. JPA은 ORM을 위한 자바 EE 표준이며 Spring-Data-JPA는 JPA를 쉽게 사용하기 위해 스프링에서 제공하고 있는 프레임워크입니다. 추상화 정도는 Spring-Data-JPA -> JPA -> Hibernate -> Datasource (왼쪽에서 오른쪽으로 갈수록 구체화) 입니다. 참고로, Hibernate는 ORM 프레임워크이며 DataSource는 스프링과 연결된 MySQL, P..
| 스프링 부트 PostgreSQL 연동하기 MySQL 연동하는 법과 유사하므로 다음 글을 참조하시면 좋습니다. [Spring Framework/Spring boot2] - [Spring Boot #22] 스프링 부트 DBCP 및 MySQL 연동해보기 프로젝트 구조 ├── pom.xml ├── spring-boot-tutorial.iml ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── tutorial │ │ │ └── springboottutorial │ │ │ ├── PostgreSQLRunner.java │ │ │ └── SpringBootTutorialApplication.java │ │ └── resources │ │ ├── application..
| DBCP란 DBCP(Database Connection Pool)은 특정 DB에 커넥션 객체를 미리 만들어 놓고 그 커넥션이 필요할 때마다 어플리케이션에 할당하는 개념입니다. 마치 어떤 풀(저장소)에 아이템을 미리 담가놓고 필요할 때 꺼내는 것이라 생각하면 됩니다. 커넥션 객체를 만드는 것이 큰 비용을 소비하기 때문에 미리 만들어진 커넥션 정보를 재사용하기 위해 나온 테크닉입니다. 스프링 부트에서는 기본적으로 HikariCP라는 DBCP를 기본적으로 제공합니다. (https://github.com/brettwooldridge/HikariCP#frequently-used) | 스프링 부트 DBCP 설정 DBCP 설정은 애플리케이션 성능에 중요한 영향을 미치므로 신중히 고려해야하는 부분입니다. 커넥션 풀..
| 인메모리 데이터베이스 디스크가 아닌 주 메모리에 모든 데이터를 보유하고 있는 데이터베이스입니다. 디스크 검색보다 자료 접근이 훨씬 빠른 것이 큰 장점입니다. 단점은 매체가 휘발성이기 때문에 DB 서버가 꺼지면 모든 데이터가 유실된다는 단점이 있습니다. 스프링 부트에서 H2, HSQL 같은 인메모리, 디스크 기반 DB를 지원합니다. | H2 데이터베이스 사용하기 프로젝트 구조 | pom.xml +---src | +---main | | +---java | | | \---com | | | \---tutorial | | | \---springdatatutorial | | | H2Runner.java | | | SpringDataTutorialApplication.java | | | | | \---resour..