일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 자바
- MYSQL
- 트랜잭션
- Interceptor
- 관점지향프로그래밍
- RestControllerAdvice
- 스프링
- 스프링 시큐리티
- Filter
- spring boot
- Spring Security
- aop
- Spring
- java
- OOP
- 스프링부트
- request
- 디자인패턴
- proxy pattern
- response
- 객체지향프로그래밍
- 인터셉터
- network
- git
- http
- aspect
- SQL
- mybatis
- Redis
- exception
- Today
- Total
목록Spring Framework (38)
장쫄깃 기술블로그

들어가며 대규모 서비스 개발 시에 가장 기본적으로 하는 튜닝은 바로 DB에서 Write와 Read DB를 Replication(레플리케이션, 복제)하고, 쓰기 작업은 Master(Write)로 보내고 읽기 작업은 Slave(Read)로 보내어 부하를 분산 시키는 것이다. 특히, 대부분의 서비스는 읽기가 압도적으로 많기 때문에 Slave는 여러 대를 두어 읽기 부하를 분산 시킨다. 그런데 또 하나 기억해야 할 것이 Replication은 비록 짧더라고 딜레이가 존재하는 것이다. 따라서 정합성이 굉장히 중요한 데이터는 비록 Read 작업이더라도 Slave에서 읽지 않고 Master에서 읽어야만 하는 경우도 있다. 때문에, 해당 게시글에서는 Transaction Read-Only인 경우 Slave에서 Read..

들어가며 기존에 SpringBoot에선 tomcat-jdbc를 기본 DataSource로 제공했다. 하지만 2.0부터 HikariCP가 기본으로 변경되었다.(참고) HikariCP는 이전 버전에서도 많은 사람들이 설정을 변경해서 사용했을 정도로 인기가 많았다. 이번 게시글에선 HikariCP의 DataSource 정보를 설정하는 방법에 대해서 알아보려고 한다. 더 나아가 다음 게시글에선 HikariCP를 이용하여 Transaction Read-Only 적용 시 Master / Slave DB 라우팅하는 방법까지 가보려고 한다. 1. Dependency 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' im..

들어가며 Spring 에서는 Annotation 사용에 대한 기능을 많이 제공하고 있다. @Controller, @Service, @Component, @Repository 등 많은 Annotation이 존재한다. 해당 Annotation은 각 기능에 필요한 만큼 많은 기능을 내포하고 있으며, 이러한 내용을 잘 알지 못해도 필요한 기능만 쉽게 사용할 수 있도록 제공되어지고 있다. 하지만 이러한 Annotation에 대해 불필요한 내용이 포함되거나 새롭게 필요한 내용이 있는 경우 Custom을 하기도 한다. 그 중 주로 사용되는 @Target과 @Retention에 대해 알아보도록 하겠다. Meta-Annotation meta-annotation은 다른 annotation 에서도 사용되는 annotatio..

들어가며 스프링 프레임워크로 개발시 빈을 등록할 때 빈의 의존관계로 인해 빈들이 등록되는 순서를 지정할 필요가 있다. (예를 들어, C 빈은 A빈과 B빈 등록 후에 등록되어야 한다.) 이 때 사용하는 어노테이션은 @DependsOn 에 대해 알아보려고 한다. @DependsOn @DependsOn 은 어떤 빈이 다른 빈보다 먼저 초기화되도록 강제하며, 에러가 발생하더라도 개발자가 원인을 찾을 수 있도록 메시지를 보여준다. @Component("A") public class ComponentA { // ... } @Component("B") public class ComponentB { // ... } @Component("C") @DependsOn(value={"A", "B"}) public class ..

들어가며 @Autowired는 Component Scan + @Component로 스프링 빈에 등록된 객체를 찾아서 필요한 의존관계를 설정한다. (우선적으로, 타입(Type)으로 해당 빈(Bean)을 찾는다.) 만약 @Autowired를 통한 자동 의존관계 주입 시 여러개의 빈이 존재한다면 어떻게 될까? 어떤 빈을 의존주입을 해야할 지 판단하지 못하는 경우 UnsatisfiedDependencyException 이 발생한다. UnsatisfiedDependencyException은 예외명에서도 알 수 있듯이 스프링 빈 객체들이 생성되는 과정에서 의존주입을 하게 되는데, 필드에 해당하는 의존관계를 만족시킬 수 없을 때 발생하는 예외이다. 그 중에서 대표적으로 NoUniqueBeanDefinitionExce..

들어가며 지난 게시글에서 URL에 대한 권한을 동적으로 체크하는 방법에 대해서 알아보았다. 이번 게시글에서는 권한에 따른 메뉴를 동적으로 출력하는 방법에 대해서 알아보려고 한다. Spring Security 기본 설정은 이번 게시글에선 생략하려고 한다. 이번 게시글의 모든 내용은 이전 게시글에서 Spring Security Session or JWT 기본 설정 관련 내용을 전부 완료한 이후 진행하는 것으로 가정하려고 한다. Spring Security Session or JWT 기본 설정 관련 내용은 이전 게시글을 참고하면 된다. 링크 : https://jangjjolkit.tistory.com/25 [Spring Security] 2. Spring Security 적용하기 (Session) 들어가며 스..

들어가며 지난 게시글들에서 Session, JWT를 이용하여 로그인 및 권한을 체크하는 방법에 대해서 알아보았다. 그런데 URL 및 권한을 관리자가 동적으로 관리해야 한다면 기존 방식을 사용할 수 없을 것이다. 접근 URL에 대한 권한 정보가 변경된 경우, 어플리케이션을 재기동해야 변경된 정보가 적용되는 문제가 있기 때문이다. 그래서 이번 게시글에선 URL과 권한을 동적으로 관리하고 체크할 수 있는 방법에 대해서 알아보려고 한다. Spring Security 기본 설정은 이번 게시글에선 생략하려고 한다. Spring Security Session or JWT 기본 설정 관련 내용은 이전 게시글을 참고하면 된다. 링크 : https://jangjjolkit.tistory.com/25 [Spring Secu..

들어가며지난 게시글에서 스프링 시큐리티를 이용한 로그인 구현 시 Session을 사용하는 방법을 알아보았다. 스프링 시큐리티는 기본적으로 Session을 사용하는 것이 기본이지만 JWT를 이용하여 로그인을 구현할 수도 있다. 때문에, JWT를 이용한 로그인을 만들어보았다. 해당 글을 작성하며, 지난 게시글에서 설명한 내용중 겹치는 내용의 일부분은 생략했다. 때문에 설명이 필요한 부분이 있다면 이전 게시글을 참고하면 된다.또한, Session을 이용한 스프링 시큐리티 로그인은 해당 글을 참고하면 된다.링크 : https://jangjjolkit.tistory.com/25 [Spring Security] 2. Spring Security 적용하기 (Session)들어가며 스프링 시큐리티를 이용하여 간단하게 ..

들어가며스프링 시큐리티 사용시 기본적으로 Session을 사용한다. 스프링 시큐리티와 Session을 이용하여 로그인 및 권한을 체크하는 기능을 만들어보았다. 스프링 시큐리티에 대한 설명은 해당 글을 참고하면 된다.링크 : https://jangjjolkit.tistory.com/24 [Spring Security] 1. Spring Security(스프링 시큐리티) 란?Spring Security(스프링 시큐리티) 란? 스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증, 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. 즉, 인증(Authenticate, 누구인지) 과 인가(Ajangjjolkit.tistory.com 1. Dependency 추가 org.spr..

Spring Security(스프링 시큐리티) 란? 스프링 시큐리티는 스프링 기반의 애플리케이션 보안(인증, 권한, 인가 등)을 담당하는 스프링 하위 프레임워크이다. 즉, 인증(Authenticate, 누구인지) 과 인가(Authorize, 어떤것을 할 수 있는지)를 담당하는 프레임워크를 말한다. 스프링 시큐리티에서는 주로 서블렛 필터(Filter)와 이들로 구성된 필터체인, 그리고 필터체인들로 구성된 위임모델을 사용한다. 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다. 보안 용어 접근 주체(Principal) : 보호된 리소스에 접근하는 대상 인증(Authentication) : 보호된 리소스에 접근한 대상에 대해 ..