본문 바로가기

IT/Spring

(40)
[Spring Boot] @ControllerAdvice을 이용한 Exception 처리 오류 처리는 프로그램을 개발하는데 있어서 매우 큰 부분을 차지한다. 오류를 예측해서 비정상적인 상황이 발생하지 않게 하는 것은 정말 중요하다. 1. @ControllerAdvice 란? @Controller나 @RestController에서 발생한 예외를 한 곳에서 관리하고 처리할 수 있게 도와주는 어노테이션이다. 2. @ControllerAdvice 예제 코드 동일한 유형의 Error Response 반환 확장성이 용이한 Custom Exception의 사용 1) ErrorCode.class 예외에 대한 정보를 담고있는 enum class 이다. public enum ErrorCode { INVALID_PARAMETER(400, null, "Invalid Request Data"), COUPON_EXP..
[Spring Boot] spring boot devtools devtools는 웹 서버 개발 시 유용한 기능들을 포함하고 있는 라이브러리 입니다. 화면 수정 시, 서버를 재구동 하지 않고 브라우저를 새로고침 함으로써 화면을 리로딩 시킬 수 있습니다. 1. pom.xml ... org.springframework.boot spring-boot-devtools ... spring-boot-devtools 라이브러리를 dependency합니다. 2. livereload enabled 및 Cache Disabled aplication.yml spring : devtools : livereload : enabled : true thymeleaf: cache : false devtools를 이용해서 livereload를 활성화 시키고, page cache를 비활성화 합니다...
[Spring Boot] Spring Security 적용하기 Spring Security 란? Spring Security는 스프링 기반의 어플리케이션 보안을 담당하는 프레임워크입니다. Spring Security를 사용하면 사용자 인증, 권한, 보안처리를 간단하지만 강력하게 구현 할 수 있습니다. Spring Boot + Hibernate + SpringSecurity + thymeleaf + mariadb를 이용해 간단한 회원 가입 및 로그인 기능을 구현해보겠습니다. pom.xml ... 2.1.9.RELEASE ... org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot s..
[Spring Boot] Spring Security의 동작 Spring Security 란? Spring Security는 스프링 기반의 어플리케이션 보안을 담당하는 프레임워크이다. Spring Security를 사용하면 사용자 인증, 권한, 보안처리를 간단하지만 강력하게 구현 할 수 있다. Filter 기반으로 동작하기 때문에 Spring MVC와 분리되어 동작한다. Spring Security를 이해하기 위해서는 먼저 보안관련 용어를 숙지해야 한다. 접근 주체(Principal) 보안 시스템이 작동되고 있는 애플리케이션에 접근하는 유저 인증(Authentication) 접근한 유저를 식별하고, 애플리케이션에 접근할 수 있는지 검사 인가(Authorize) 인증된 유저가 애플리케이션의 기능을 이용할 수 있는지 검사 SecurityFilterChain 일반적으로..
[Spring Boot] 선언적 트랜잭션 @Transactional 트랜잭션이란? 데이터베이스의 상태를 변경시키는 작업 또는 한번에 수행되어야하는 연산들을 의미한다. 트랜잭션 작업이 끝나면 Commit 또는 Rollback 되어야한다. 트랜잭션의 성질 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리합니다 즉, 모두 성공 또는 모두 실패 일관성(Consistency) 트랜잭션은 일관성 있는 데이터베이스 상태를 유지한다. 격리성(Isolation) 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리해야한다. 영속성(Durability) 트랜잭션을 성공적으로 처리되면 결과가 항상 저장되어야한다. @Transactional 스프링에서 지원하는 선언적 트랜잭션이다.. xml 또는 Javaconfig를 통해 설정 할 수 있다. Spring..
[Spring Boot] Hibernate Open Session In View Spring Boot에서 Hibernate 테스트를 하고 있던 도중 예기치못한 상황을 마주했습니다. 영속성이 끝났다고 생각되는 시점에서 프록시 객체를 조회하면 LazyInitializationException - No Session에러가 발생해야 하는데 Select Query가 실행되는 것이었습니다. 웹 검색을 통해 다음과 같은 사실을 알았습니다. Open Session In View Transaction이 종료된 후에도 Controller의 Session이 close되지 않았기 때문에, 영속 객체는 Persistence 상태를 유지할 수 있으며, Session이 열려있고 Persistence 상태이기 때문에 프록시 객체에 대한 Lazy Loading을 수행할 수 있게 됩니다. 출처: https://ki..
[Spring Boot] Hibernate 연동 방법 1. Hibernate란 Boss에서 개발한 ORM(Object Relation Mapping)프레임워크 중 한개입니다. ORM이란 객체와 DB 테이블의 매핑을 의미합니다. ORM 매핑을 이용하면 객체로 DB 테이블 조작할 수 있습니다. 2. pom.xml ... org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot spring-boot-starter-data-jpa org.mariadb.jdbc mariadb-java-client ... Spring Boot 버전 - 2.1.0.RELEASE hibernate-core..
[Spring Boot] Swagger 연동 및 설정 방법 1. Swagger란? 서버로 요청되는 URL 리스트를 HTML화면으로 문서화 및 테스트 할 수 있는 라이브러리입니다. 테스트는 Spring Boot 2.2.2 RELEASE에서 진행 되었습니다. 2. pom.xml ... io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 ... 3. SwaggerConfig.java import java.util.HashSet; import java.util.Set; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import s..

반응형