본문 바로가기

분류 전체보기311

Springboot - Security Springboot - Spring Strarter Security Spring Security 스프링 시큐리티는 웹 시큐리티, 메소드 시큐리티와 다양한 인증 방법(LDAP, 폼 인증, Basic 인증, Auth)을 지원한다. 3개의 페이지를 만들어 security 를 알아보자. index, home 페이지는 모든 사용자가 접속하고, my 페이지는 본인만(인가된 사람만) 접근하는 것을 만들것이다. 스타터 웹과 타임리프를 의존성에 추가한다. org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf 컨트롤러를 등록하자. @Controller public class HomeContr.. 2021. 1. 21.
Spring Data - MongoDB Springboot - Spring Data - MongoDB MongoDB 는 json 기반의 다큐먼트 데이터베이스이다. 스프링부트와 연동하여 사용하는 방법을 알아보자. 의존성을 추가한다. pom.xml org.springframework.boot spring-boot-starter-data-mongodb MongoDB 설치, 실행 docker 를 통해 mongodb를 설치하고 실행한다. $ docker run -p 27017:27017 --name springboot-mongodb -d mongo 스프링부트가 localhost:27017 에 기본으로 mongodb 서버를 연동한다. 따라서 로컬 db 27017:도커 db 27017 를 연결해준다. mongo 데몬을 실행시킨다. 몽고 도커 컨테이너를 실.. 2021. 1. 21.
Spring Data - Redis Springboot - Spring Data - Redis RDB 가 아닌 NoSQL 과 스프링 데이터를 연동해보자. 1) Redis 를 연동하기 위해 의존성을 추가해준다. pom.xml org.springframework.boot spring-boot-starter-data-redis 2) 로컬에 Redis 서버를 띄우기 위해 도커를 사용한다. $ docker run -p 6379:6379 --name springboot-redis -d redis Redis 는 6379가 기본포트이고, 로컬의 6379 포트와 도커 안 6379 포트를 연결해준다. 3) 도커 컨테이너를 실행시킨다. $ docker exec -it springboot-redis redis-cli 4) 자바에서 템플릿으로는 StringRed.. 2021. 1. 21.
Spring Data - Neo4j 사용 Springboot Spring Data - Neo4j Neo4j는 노드와 연관관계를 영속화하는데에 RDB 보다 다양한 장점이 있는 데이터베이스이다. 의존성추가 pom.xml org.springframework.boot spring-boot-starter-data-neo4j Docker로 Neo4j 설치, 실행 $ docker run -p 7474:7474 -p 7687:7687 --name springboot-neo4j -d neo4j http 프로토콜용 포트(7474), 볼트(bolt) 프로토콜용 포트(7687)를 각각 매핑해주어야 한다. 7474 포트에서 동작하는 브라우저가 서버에 매핑 될 수 있다. -d 데몬 옵션으로 neo4j 이미지를 실행한다. (이미지가 없으면 자동으로 docker hub에서.. 2021. 1. 20.
Spinrg data 초기화, migration Springboot - Spring Data 초기화, migration 초기화 JPA로 DB 초기화 application.properties spring.jpa.hibernate.ddl-auto=update update : 자동으로 DB schema(테이블, 칼럼 등)가 생성된다. 기존에 것은 냅두고, 새로운 스키마를 추가해준다. create : 이미 있던 스키마를 제거하고 새로 스키마 생성한다. 안에 있던 데이터도 삭제된다. create-drop : 자동 스키마 생성하고 종료할 때 삭제한다. spring.jpa.generate-ddl=true 이 옵션도 추가해야 스키마가 생성된다. 운영용 환경에서는 아래와 같이 사용하면 객체가 엔터티와 잘 매핑이 되어있는 지 검증하는데 유용하다. spring.jpa.h.. 2021. 1. 20.
Springboot - Spring Data JPA Springboot 014 - Spring Data JPA ORM (Object Relational Mapping) 자바 코드는 객체 지향 프로그래밍인데 이를 릴레이션과 매핑할 때 개념적으로 불일치가 일어난다. 예를들면 객체의 다양한 크기들을 데이터 테이블에 어떻게 매핑을 시킬 수 있는가? 객체는 상속이 있지만, 테이블은 상속이 없는데 어떻게 매핑 할 것인가? Identity 는 객체의 경우 해쉬코드, equals method 를 통해 알지만, 테이블의 경우 인덱스 컬럼이 있다. 서로 다른 Object 와 Relation은 어떻게 일치시키는가? 에 관한 문제가 있다. ORM 은 이를 해결하기 위한 프레임워크고, 자바 (EE) ORM 표준으로 JPA 가 있다. 스프링 데이터 JPA는 위에서 말한 JPA를 .. 2021. 1. 20.
Spring Data - PostgreSQL Springboot Spring Data - PostgreSQL PostgreSQL 은 무료 오픈소스 DBMS 이다. 스프링 데이터와 연동하는 법을 알아보자. 우선 의존성에 포스트그레스큐엘을 추가한다. pom.xml org.postgresql postgresql 그리고 스프링 데이터소스에 DB 서버와 데이터베이스를 연동시켜주고, 접속 아이디와 비밀번호를 알려주자. application.properties spring.datasource.url=jdbc:postgresql://localhost:5432/springboot spring.datasource.username=wordbe spring.datasource.password=1234 이제 postgreSQL 을 도커에서 실행시켜보자. $ docker .. 2021. 1. 20.
Spring Data - MySQL Springboot - Spring Data - MySQL DBCP DataBase Connection Pool 스프링부트는 기본적으로 HikariCP 를 사용한다. 그 외 Tomcat CP, Commons DBCP2 를 지원한다. HikariCP 의 몇가지 속성을 살펴보자. autoCommit : 자동으로 작업결과를 커밋한다. connectionTimeout : DB 에게 요청이 있을 시 연결을 시도하고 있을 시간을 설정한다. 짧을수록 에러가 잘 날 것이다. (기본은 30초다.) maximumPoolSize : 동시에 작업을 할 수 있는 최대 풀 개수는 CPU 코어 수보다 같거나 작다. Hikari 설정을 프로퍼티 파일에서 할 수 있다. 자세한 속성은 HikariConfig 클래스에서 찾아 볼 수 있다.. 2021. 1. 20.
Spring Data - 인메모리 DB Springboot - Spring Data - 인메모리 DB 스프링이 지원하는 인메모리 데이터베이스는 H2, HSQL, Derby가 있다. Spring JDBC (Java DataBase Connectivity) 가 클래스패스에 있으면 DB와 자바를 연결해주는 빈 클래스를 자동 설정해준다. 이렇게 H2, JDBC가 의존성에만 적혀있다면 스프링부트는 기본적으로 H2 인메모리 데이터베이스를 자동설정해준다. JDBC와 H2 database 의존성을 추가한다. org.springframework spring-jdbc com.h2database h2 아마존 제공 java 인 corretto 를 사용했었는데, 위와같이 jdbc를 연동하면 DataSource가 빈으로 자동등록이 안되었다. 따라서 jdbc 의존성 등.. 2021. 1. 20.
Springboot - Exception, HATEOAS, CORS Springboot - Web MVC ExceptionHandler 에러를 처리하는 클래스를 만들어보자. 스프링 MVC 에서 어노테이션 기반 에러처리이다. /except 요청을 받을 시 예외객체를 리턴한다. @Controller public class ExceptionController { @GetMapping("/except") public String except() throws SampleException { throw new SampleException(); } @ExceptionHandler(SampleException.class) public @ResponseBody AppError sampleError(SampleException e) { AppError appError = new AppEr.. 2021. 1. 19.
728x90