공부

📌 의존성 주입이란?Spring Boot에서 `의존성 주입(Dependency Injection, DI)`은 객체 간의 의존 관계를 자동으로 설정해주는 중요한 개념이다.이를 통해 코드의 `결합도`를 낮추고, `테스트 용이성`과 `유지보수성`을 높일 수 있다. 의존성 주입을 통해 클래스 간의 결합도를 낮출 수 있다. 결합도가 낮아지면, 한 클래스의 변경이 다른 클래스에 미치는 영향을 줄일 수 있다. 이는 코드의 유지보수성과 확장성을 높이는 데 중요한 역할을 한다. 예를 들어, 클래스 A가 클래스 B에 직접 의존하는 경우, B의 변경사항은 A에 직접적인 영향을 미치게 된다. 하지만 의존성 주입을 사용하면, A는 B의 구체적인 구현이 아니라 인터페이스나 추상 클래스에 의존하게 되어, B의 구현 변경이 A에 ..
테스트비즈니스 로직과 제약 사항을 제대로 준수하고 있는지 확인하기 위해 테스트를 ‘필수적으로’ 작성해야 한다.테스트는 시간이 남으면 작성하는 것이 아닌, 우리의 소프트웨어가 제대로 작동하는 것인지 보증해주는 문서와 동일하게 간주하여 꼼꼼하게 작성해야 한다.특히, `예외가 발생하는 테스트`는 반드시 작성해야 한다.  도메인 테스트 작성하기경계값이나 (ex. 0), 실패하는 값을 넣고 예외가 제대로 발생하는지 확인한다. public class Point { private int amount; public Point(int amount) { validateAmount(amount); this.amount = amount; } public void plus(int ..
import lombok.Builder;public class User { private Long id; private String email; private String password; private String nickname; private Point point; // @Builder 어노테이션이 적용된 생성자 @Builder public User(String email, String password, String nickname) { this.email = email; this.password = password; this.nickname = nickname; this.point = new Point()..
유효성 검사를 위한 방법은 상황에 따라 다르며, 일반적으로는 다음과 같은 고려 사항이 있다. 1. 어노테이션을 사용하는 방법장점:코드의 가독성을 높일 수 있다. 필드에 직접 어노테이션을 붙이기 때문에 해당 필드의 제약 조건이 명확하게 드러난다.Hibernate Validator와 같은 라이브러리를 활용하여 기존의 검증 규칙을 재사용할 수 있다.Spring Framework와의 통합이 용이하다. 예를 들어, Spring Boot에서는 Hibernate Validator를 기본으로 제공하므로 설정이 간편함.단점:특정 상황에서는 유효성 검사 로직이 복잡해질 수 있다. 예를 들어, 여러 필드 간의 종속적인 검증이 필요한 경우 어노테이션만으로는 한계가 있을 수 있다.커스텀한 검증 규칙을 정의하고 적용하기 어려운 ..
국비 학원에서 '같이사자' 프로젝트를 진행했는데, 아쉬움이 많이 남았다.그래서 Spring으로 했던 기존 프로젝트를 Spring Boot로 다시 구현해보려고 한다. 구현하면서 배운 것들을 블로그에 기록해봐야겠다!
· 공부/Web
Spring Security를 공부하다가!!도저히 정리를 안 하고는 이해가 안 될 것 같아서 블로그에 정리를 해 보려 한다.  먼저 build.gradle에 security 디펜던시 추가를 해준다.물론, JWT token을 사용할 것이기에 JWT 종속성도 추가해 준다.   JWT 사용 흐름 Client 가 username, password로 로그인 성공 시서버에서 "로그인 정보" → JWT로 암호화 (Secret Key 사용)JWT를 Client 응답 Header에 전달응답 Header 에 아래 형태로 JWT 전달ex) **Authorization: Bearer** eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzcGFydGEiLCJVU0VSTkFNRSI6Iuult..
· 공부/Java
대부분의 스프링 애플리케이션은 웹!!웹 애플리케이션은 보통 여러 고객이 동시에 요청함   그런데 스프링 없이 순수한 DI 컨테이너로 객체 참조값을 비교해보면  두 참조값이 다른 것을 알 수 있음그런데 만약 고객이 요청할 때 마다 항상 새로운 객체를 생성한다면 메모리 낭비가 심할 것이다!!!! 이를 해결하기 위해 싱글톤 패턴을 사용한다객체를 하나 만든 뒤 해당 객체를 공유하는 것이다 싱글톤 패턴 - 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴  싱글톤 패턴을 사용하여 싱글톤 객체를 생성하고  테스트 실행 시 둘 모두 같은 객체를 참조하는 것을 볼 수 있다..신기하닷!!!!! 생성자를 private 처리해서 숨기다니 근데 스프링 컨테이너는 모든 Bean에 이 싱글톤 패턴을 적용해준다!!..
· 공부/Java
의존관계 주입이란?- 런타임 (실행 시점)에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것-> 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 있음 IoC 컨테이너, DI 컨테이너- AppConfig와 같이 객체 생성과 관리를 관리, 의존관계 연결해주는 것- 의존관계 주입에 초점을 맞춤 스프링 컨테이너- ApplicationContext- 기존에는 AppConfig로 생성, 이제 스프링 컨테이너를 통해 객체 생성 + DI- @Configuration이 붙은 AppConfig를 설정 정보로 사용- @Bean이 적힌 메서드는 모두 호출하여 스프링 컨테이너에 반환된 객체 등록 -> 스프링 빈- applicationContext.getBean()를 통해..
린구
'공부' 카테고리의 글 목록