Spring (53) 썸네일형 리스트형 [Spring] 프로파일(profiles) 로딩 우선순위 👤 프로파일이란?Spring 프로파일은 같은 애플리케이션이라도 실행 환경에 따라 다른 설정 파일이나 빈(Bean)을 사용할 수 있도록 해주는 기능이다. 사용 예시개발환경(dev): 로컬 DB 사용테스트환경(test): H2 메모리 DB 사용운영환경(prod): 실제 운영용 DB 사용프로파일을 설정하는 방법// 폴더 구조src/├── main/│ └── resources/│ ├── application.yml # 공통 설정│ ├── application-dev.yml # 개발용│ └── application-prod.yml # 운영용└── test/ └── resources/ └── ap.. [Spring] 단위 테스트 작성 with (JUnit5, Mockito) 🤔 단위 테스트(Unit Test)란?단위 테스트(Unit Test) 는 소프트웨어 개발에서 가장 기본적인 테스트 기법으로, 특정 기능 단위(보통 메서드)의 동작을 검증한다 🤔 Mockito란?Mockito는 테스트 대상 객체의 의존성을 모방(mock)하는 가짜 객체를 쉽게 생성해 주는 라이브러리이다.실제 복잡한 의존성(DB, 네트워크, 외부 API)을 대신해, 테스트 환경을 단순화하고 빠르게 만들어 준다. 소프트웨어 개발 시 단위 테스트는 필수지만, 우리가 테스트하려는 클래스(예: MemberService)는 보통 이런 특징이 있다.테스트 대상 클래스가 다른 객체에 강하게 의존 (예: MemberRepository)의존 객체는 복잡하거나 무거움 (DB 연결, 네트워크 호출, 외부 API 등)실제 객.. [Spring] BCryptPasswordEncoder 🔐 BCryptPasswordEncoderBCryptPasswordEncoder는 Spring Security에서 가장 많이 사용되는 비밀번호 해싱 도구이다.또한, bcrypt 알고리즘을 기반으로 비밀번호를 단방향 해싱하고, 자동으로 salt를 추가해주는 보안 알고리즘이다. 🤔 bcrypt 알고리즘?bcrypt는 비밀번호를 안전하게 저장하기 위한 해싱 알고리즘이다. 비밀번호 보안을 위한 대표적인 알고리즘 중 하나이며,Spring Security, Django, Laravel 등 거의 모든 프레임워크에서 사용되고 있다. 📌 bcrypt의 주요 특징단방향 해싱: 복호화가 불가능한 해시값 생성자동 Salt 포함: 같은 비밀번호도 다른 해시값 생성 (레인보우 테이블 공격 방지)계산 비용 조절 가능: wor.. [Spring] 스프링 빈과 스프링 컨테이너 스프링 빈스프링 빈(Spring Bean)은 스프링 컨테이너가 관리하는 객체로, 스프링 애플리케이션에서 구성 요소로 동작하며, 의존성 주입과 같은 스프링의 핵심 기능을 활용할 수 있도록 관리된다. 즉, 빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다. 쉽게 이해하자면 new 키워드 대신 사용한다고 보면된다. 스프링 빈의 특징1. 스프링 컨테이너에서 관리된다개발자가 직접 생성하고 관리하지 않고, 스프링 컨테이너(ApplicationContext)가 객체의 생명 주기를 관리한다.즉, 스프링 프레임워크가 객체(빈)의 생성부터 소멸까지의 생명 주기를 책임지고 관리한다는 뜻이다.스프링 컨테이너(ApplicationContext)는 스프링 빈(Bean)을 생성하고 관리하.. [Spring] 예외 처리 방식 글로벌 예외 처리(Global Exception Handling)Spring에서 글로벌 예외 처리(Global Exception Handling)는 애플리케이션 전역에서 발생하는 예외를 한 곳에서 처리할 수 있도록 돕는 중요한 기능이다. 이와 관련하여 @RestControllerAdvice와 @ExceptionHandler는 글로벌 예외 처리의 핵심 요소로 작동하며, 이를 통해 예외 처리 로직을 중앙 집중화하고 코드 중복을 줄일 수 있다. 이를 통해 다음과 같은 이점을 얻을 수 있다. 글로벌 예외 처리는 모든 컨트롤러에서 발생하는 예외를 중앙에서 관리하기 위한 설계 패턴이다. 중복 코드 제거: 모든 컨트롤러에서 중복적으로 작성할 필요 없음.유지보수성 향상: 예외 처리 로직이 한 곳에 모여 있어 수정 및 .. [Spring] Security JWT 보호되어 있는 글입니다. [Spring] 세션, 토큰, 쿠키 Cookie쿠키를 이용해서 서버는 우리의 브라우저에 데이터를 넣을 수 있다.보통 서버가 클라이언트에게 정보를 저장해두고 다음 요청 시 이를 식별하는 데 사용한다.우리의 브라우저의 쿠키를 저장한 후 해당 웹사이트를 방문할 때마다 브라우저는 해당 쿠키도 요청과 함께 보내진다. 특징클라이언트의 웹 브라우저에 저장되는 작은 데이터 조각이다.쿠키는 클라이언트(브라우저)에 저장되며, 유효기간을 설정할 수 있다. 서버와 클라이언트의 모든 HTTP 요청마다 자동으로 전송된다.쿠키는 도메인에 따라 제한이 된다. (예를 들어, 구글이 준 쿠키는 구글에게만 보내지게 됨)쿠키는 인증 뿐만 아니라 여러가지 정보를 저장할 수 있다(언어설정을 바꾸면 서버는 쿠키를 주고, 선택한 언어를 저장). 쿠키와 보안 문제쿠키 값은 임의로 변.. [Spring] @Profile @Profile@Profile 은 애플리케이션의 환경별로 다른 빈을 등록하고, 환경에 따라 다른 설정을 적용할 수 있도록 도와주는 기능이다.이를 통해 개발, 테스트, 운영 환경별로 다른 설정을 쉽게 관리할 수 있다.환경은 사용자가 정의하기 나름이지만 dev(개발), test(테스트), local(로컬), prod(운영) 등이 사용된다.환경별로 다른 파일을 만드는 경우 무조건 application-{사용할 환경 이름}.properties 형식으로 파일 이름을 지정해야한다. @Profile 사용@Profile을 사용하여 특정 빈을 특정 프로파일에서만 활성화할 수 있다.예를 들어, @Profile("dev")로 설정된 빈은 dev 프로파일이 활성화된 경우에만 생성되고 등록된다.이를 통해 환경별로 필요한 빈을.. [Spring] 스프링 AOP - 실무 주의사항 목차프록시와 내부 호출 - 문제프록시와 내부 호출 - 대안1 자기 자신 주입프록시와 내부 호출 - 대안2 지연 조회프록시와 내부 호출 - 대안3 구조 변경프록시 기술과 한계 - 타입 캐스팅프록시 기술과 한계 - 의존관계 주입프록시 기술과 한계 - CGLIB프록시 기술과 한계 - 스프링의 해결책 프록시와 내부 호출 - 문제스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상 객체(Target)을 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하고, 이후에 대상 객체를 호출한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는다. AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링.. [Spring] 스프링 AOP - 로그 출력 AOP 만들기 목차예제 만들기 로그 출력 AOP 재시도 AOP 예제 만들기@Trace 애노테이션으로 로그 출력하기 @Retry 애노테이션으로 예외 발생시 재시도 하기먼저 AOP를 적용할 예제를 만들자. ExamRepository@Repositorypublic class ExamRepository { private static int seq = 0; /** * 5번에 1번 실패하는 요청 */ public String save(String itemId) { seq++; if (seq % 5 == 0) { throw new IllegalStateException("예외 발생"); } return "ok"; }}5번에 1.. 이전 1 2 3 4 ··· 6 다음