Spring
Spring AOP, 관점 지향 프로그래밍
AOP Aspect-Oriented Programming 관점지향 프로그래밍은 객체지향 프로그래밍을 보완하기 위해 쓰임 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화하여 재사용할 수 있도록 지원하는 것 보통 비즈니스 웹 애플리케이션이라면 사업에 핵심적인 핵심 비즈니스 로직 횡단 관심사(cross-cutting concerns): 애플리케이션 전체를 관통하는 부가 기능 로직 (로깅, 보안, 트랜젝션) 관점 == 관심사( 개발에 필요한 고민이나 염두에 두어야 하는 일) - 파라미터가 올바르게 들어왔을까? - 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? - 이 작업에 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 핵심 로직은 아니지만, 코드를 온전하..
@Component, @Bean 어노테이션
@Component 클래스를 Spring에서 알아서 관리해주는 자바 빈으로 표시하는 데 사용 Spring이 자동으로 클래스의 인스턴스를 생성하고 종속성을 포함하여 각종 lifecycle 관리 @Component public class MyComponent { // ... } @Autowired ApplicationContext에 종속성을 주입 Spring에서 필요한 종속성의 인스턴스를 자동으로 주입 @Component public class MyComponent { private MyService myService; @Autowired public MyComponent(MyService myService) { this.myService = myService; } // ... } @Service, @Con..
Spring 제어의 역전(Ioc) ,의존성 주입 (DI), ApplicationContext
IOC (Inversion of Control)제어의 역전이라는 의미애플리케이션 흐름의 주도권을 Spring이 갖는다라는 것객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 함가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 함 IOC 컨테이너는 객체의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리 DI(Dependency Injection)의존성하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것A 객체가 B 객체 없이 동작 불가능한 상황을 'A가 B에 의존적이다'라고 표현 public class Store { private Pencil pencil; public Store() { this.pen..
객체지향의 설계, SOLID 원칙
1. 단일 책임 원칙 SRP(Single Responsibility Principle) 객체는 단 하나의 책임만 가져야 한다 하나의 클래스는 하나의 기능 담당하여 하나의 책임을 수행하는데 집중되도록 클래스를 따로따로 여러개 설계하라는 원칙 만일 하나의 클래스에 기능(책임)이 여러개 있다면 기능 변경(수정) 이 일어났을때 수정해야할 코드가 많아짐 최종적으로 단일 책임 원칙의 목적은 프로그램의 유지보수성을 높이기 위한 설계 기법 남자가 클래스 고장나면 모든 기능 사용 불가능 클래스를 나눠 놓는다면 남자친구 클래스가 고장나도 아들, 사원, 소대원과 같은 나머지 기능 사용 가능 2. 개방 폐쇄 원칙 OCP(Open Closed Priciple) 확장에 열려있어야 하며, 수정에는 닫혀있어야 한다 기능 추가 요청이..
[Redis] Spring Boot 연동, 객체 캐싱, MSA에서 사용 시 주의점 Serialize
개발환경 macOS Ventura 13.2 Spring Boot 3.0.1 RELEASE JAVA 17 1. Build.gradle Dependency 추가 implementation 'org.springframework.boot:spring-boot-starter-data-redis' 2. application.yml 파일 수정 로컬 레디스 spring: redis: # Local Redis lettuce: pool: max-active: 10 max-idle: 10 min-idle: 2 port: 6379 host: 127.0.0.1 password: 쿠버네티스 레디스 spring: data: # K8s Redis Custer redis: cluster: nodes: - redis-cluster.re..
[Apache POI] Spring Boot 엑셀 다운로드
설문조사 시스템에서 설문조사의 총 결과 데이터를 엑셀로 한눈에 볼 수 있도록 하는 기능을 추가했다. 첫 행은 설문조사의 문항, 두번째 행부터 설문조사의 답변을 조회할 수 있다. 1. pom.xml dependency 추가 org.apache.poi poi 3.13 org.apache.poi poi-ooxml 3.13 2. application.yml 추가 spring: mvc: contentnegotiation: favor-parameter: true favor-path-extension: true media-types: xls: application/vnd.ms-excel 3. ExcelService 생성 및 엑셀 다운로드 함수 추가 0) 조회할 설문의 데이터(SurveyDTO), 질문과 답변 데이터를..
[Keycloak] MSA에서 키클록 Spring Security 연동 (2) 토큰 발급, 토큰값 확인
[Keycloak] MSA에서 키클록 Spring Security 연동 (1) dependency 추가, gateway/auth 서비스 설정 개발환경 macOS Spring Boot 2.7.5 RELEASE JAVA 11 1. MSA 서비스 구조 서비스 디스커버리 패턴으로 gateway 서비스(api gateway)를 통해 각 서비스의 api를 호출하는 형태입니다. auth 서비스를 통해 회원가입/로그 karla.tistory.com 1. auth 서비스 - 회원가입 AuthController authService를 통해 keycloack DB에 사용자 생성 후, userService를 통해 부가적인 사용자 데이터를 user DB에 저장 // 회원가입 @PostMapping("/signup") publi..
[Keycloak] OAuth2 MSA에서 키클록 SSO Spring Security 연동 (1) dependency 추가, gateway/auth 서비스 설정
개발환경macOSSpring Boot 2.7.5 RELEASEJAVA 11 1. MSA 서비스 구조서비스 디스커버리 패턴으로 gateway 서비스(api gateway)를 통해 각 서비스의 api를 호출하는 형태입니다.auth 서비스를 통해 회원가입/로그인 등 계정 및 권한을 관리합니다. (키클록 토큰 발급) 2. gateway 서비스 설정0) 프로젝트 구조📦gatewayserver ┣ 📂src ┃┣ 📂main ┃ ┃ ┣ 📂java ┃ ┃ ┃ ┗ 📂com ┃ ┃ ┃ ┃ ┗ 📂cloud ┃ ┃ ┃ ┃ ┃ ┗ 📂gatewayserver ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜GatewayserverApplication.java ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java ┃ ┃ ┗ ?..