본문 바로가기

전체 글

(54)
[Spring Cloud Gateway] Springboot Eureka 설정 module-eureka: 유레카 서버로 설정 1. module-eureka → [build.gradle]implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'유레카 서버로 사용하기 위한 dependency   2. module-eureka → [application.yml]server: port: 8761spring: application: name: module-eurekaeureka: client: register-with-eureka: false fetch-registry: false serviceUrl: defaultZone: http://localhost:876..
JWT 로그아웃 구현 시 [Redis parameter 오류] AuthController /** * 로그아웃 * 1. Redis내의 refresh_token 삭제 * 2. Redis에 현재 access_token을 logout 상태로 등록 * - 2.1. 해당 access_token의 남은 유효시간을 Redis의 TTL로 등록 * 3. JwtTokenFilter 파일의 doFIlterInternal 메소드에서 redis에 logout 상태인지 검증하는 로직 추가 * */ @DeleteMapping("/api/v1/auth/logout") public ResponseEntity logout(@RequestBody LogoutRequest request) { authService.logout(req..
[오류 정리] 1. RedisConfig basePackages 설정***************************APPLICATION FAILED TO START***************************Description:Parameter 1 of constructor in com.example.common_module.domain.coolsms.service.SmsServiceImpl required a bean of type 'com.example.common_module.domain.coolsms.repository.SmsRepository' that could not be found.Action:Consider defining a bean of type 'com.example.common_modul..
2024-08-02 BeanDefinition: 빈 설정 메타정보@Bean, 당 각각 하나씩 메타 정보가 생성된다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때마다 객체를 새로 생성한다.→ 메모리 낭비 ↑→ 해결: 해당 객체가 한 개만 생성되고, 공유되도록 설계 → "싱글톤 패턴"싱글톤 패턴?클래스의 인스턴스가 딱 한 개만 생성되는 것을 보장하는 패턴싱글톤의 단점- 코드가 길어진다- DIP 위반 (코드가 구현체를 의존하기 때문)- OCP 위반 가능성 ↑- 테스트가 어려움 (전역적으로 접근하기 때문에 단위 테스트가 어려움)- 유연성 ↓→ 해결법? 싱글톤 컨테이너!스프링 컨테이너가 싱글톤 패턴의 모든 문제점을 해결한다.→ 객체 인스턴스를 ..
2024-08-01 [기존 코드]private final MemberRepository memberRepository = new MemoryMemberRepository(); 기존의 코드는 Service단에서 Repository 구현체를 직접 생성하여 Repository 인터페이스로 받았다.→ 변경에 닫혀있으나 확장에 열려있어야 한다는 OCP 위반 (구현체가 변경되면 Service단에서 구현체 코드를 변경해야하기 때문)→ 추상화에 의존해야지, 구체화에 의존하면 안된다는 DIP 위반 [변경 코드]private MemberRepository memberRepository;public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository =..
2024-07-31 스프링의 진짜 핵심?→ 스프링은 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크 → 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체 지향 프로그래밍?다형성과 SOLID를 지킨 설계객체 지향 프로그래밍?→ 컴퓨터 프로그램 = '객체'들의 모임→ 객체의 협력이라는 관계부터 생각, 수 많은 객체 클라이언트와 객체 서버는 서로 협력 관계를 가진다객체 지향의 특징- 추상화- 캡슐화- 상속 - 다형성다형성- 역할과 구현의 분리 → 확장 가능한 설계, 클라이언트에 영향을 주지않는 변경 가능, 인터페이스의 안정적인 설계 중요- 객체 설계 시 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체 만들기스프링에서 이야기하는 IOC(제어의 역전), DI는 다형성을 활용해 역할..
2024-07-30 "스프링 빈을 등록하는 두가지 방법"@Component 스캔과 자동의존 관계 설정 → 정형화되어서 수정할 필요가 없을 때자바 코드(@Configuration, @Bean)을 사용하여 직접 스프링 빈 등록 → 정형화되지 않아서 수정이 필요할 때 (상황에 따라 구현 클래스를 변경해야할 때) "DI"생성자 주입 → final로 선언하여 런타임에 변경 x, 주입받을 객체가 bean으로 등록되어 있다면 @Autowired 생략가능/ 스프링에서 권장하는 방식필드 주입 → @Autowired만 붙여주면 자동으로 의존성이 주입됨, 외부에서 접근이 불가능하다는 단점이 있다( 테스트 코드의 중요성이 부각되면서 필드 주입은 잘 사용되지 않게 됨)Setter 주입 → final을 사용하지않아 런타임에 동적변환이 가능함, 어디..
2024-07-29 JAR(Java Archive), WAR(Web Application Archive) JAR 및 WAR은 응용 프로그램을 패키징하고 배포하기 위해 Java Spring Boot에서 사용되는 두 가지 다른 파일 형식이다. 둘의 주요 차이점은 목적과 작동 방식이다.JAR(Java ARchive)?Spring Boot는 내장 서버(Tomcat, Jetty 등)와 함께 작동하며, 어플리케이션을 JAR 파일로 패키징 한다. 이 JAR 파일은 어플리케이션과 모든 필요한 의존성을 포함하고 있어, 별도의 서버 설치 없이 실행 가능하다.이 방식은 개발자에게 배포 과정을 단순화시킨다. 복잡한 서버 환경 설정 없이 어플리케이션을 빠르게 배포하고 실행할 수 있다.WAR(Web Application Archive)?전통적인 S..