목록전체 글 (106)
공부해봅시당
@Autowired와 @RequiredArgsConstructor @Autowired와 @RequiredArgsConstructor는 스프링(Spring) 프레임워크에서 의존성 주입(Dependency Injection)을 위해 사용되는 어노테이션 기준 @Autowired @RequiredArgsConstructor 정의 스프링 컨테이너가 자동으로 의존성을 주입해주는 어노테이션. 필드, 생성자, Setter 메소드에 사용될 수 있음. Lombok 라이브러리의 어노테이션으로, final이나 @NonNull 어노테이션이 붙은 필드에 대해 생성자를 자동으로 생성함. 공통점 의존성 주입을 자동화하여 개발자가 수동으로 의존성을 관리하는 부담을 줄임. 차이점 - 다양한 방식(필드, 메소드, 생성자)의 의존성 주입 ..
EJB(Enterprise JavaBeans)란? EJB(Enterprise JavaBeans)는 자바 EE(Java Platform, Enterprise Edition) 사양의 일부로, 엔터프라이즈 애플리케이션을 개발하기 위한 서버 측 컴포넌트 모델 EJB는 비즈니스 로직을 캡슐화하고, 분산 애플리케이션을 구축할 때 필요한 서비스(예: 트랜잭션 관리, 보안, 원격 액세스)를 제공 EJB 분류 1. 세션 빈(Session Beans) 비즈니스 로직을 수행하는 컴포넌트 상태가 있는(Stateful) 세션 빈과 상태가 없는(Stateless) 세션 빈, 그리고 싱글톤(Singleton) 세션 빈으로 나뉨 1) 상태가 있는(Stateful) 세션 빈 클라이언트별로 상태 정보를 유지 2) 상태가 없는(State..

Spring은 Spring Triangle이라고 부르는 핵심 3대요소를 제공해준다 이는 각각 IoC, AOP, PSA를 일컫는다 오늘은 PSA에 대해 알아보자 PSA(Portable Service Abstraction)을 [비디오 게임 콘솔]이라는 비유로 이해해보자 각 게임마다 전용 게임기가 필요한 경우: PSA가 적용되지 않은 경우 각 게임마다 전용 게임기가 필요하다면 다양한 게임을 즐기고 싶을 때, 방은 게임기로 가득 차게 될 것이다 PlayStation용 게임, Xbox용 게임, Nintendo Switch용 게임 등을 하려면, 각각의 게임기를 구매하고 설정해야 한다 이렇게 되면 비용도 많이 들고, 각기 다른 게임기를 배우고 관리해야 하는 번거로움도 있다 하나의 게임 콘솔에서 모든 종류의 게임을 ..

Spring은 Spring Triangle이라고 부르는 핵심 3대요소를 제공해준다 이는 각각 IoC, AOP, PSA를 일컫는다 오늘은 AOP에 대해 알아보자 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)을 [회사 생활하기]라는 비유로 이해해보자 회사에서 내가 모든 일을 해야하는 경우: 관점 지향적이지 않은 경우 나는 회사에서 근무하고 있고, 나에게 주어진 업무가 아주 많다고 해보자 보고서 작성, 회의 준비, 고객 응대, 프로젝트 관리, 심지어는 사무실 청소와 같은 일까지 모든 것을 직접 해야 한다 여기서는 내가 모든 일의 책임자이며, 모든 업무 프로세스를 직접 관리해야 한다 이런 상황에서는 핵심 업무에 집중하기보다는 다양한 부가적인 업무에 시간과 에너지를 분산시켜야 ..

Spring은 Spring Triangle이라고 부르는 핵심 3대요소를 제공해준다 이는 각각 IoC, AOP, PSA를 일컫는다 오늘은 IoC에 대해 알아보자 아래 그림은 IoC를 이해하기 쉽게 정리한 이미지이다 포스팅을 끝까지 읽으면 아래 이미지가 이해될 것이다 IoC(Inversion of Control, 제어의 역전)을 [파티 주최하기]라는 비유로 이해해보자 파티를 내가 혼자 다 준비하는 경우: 제어의 역전이 없는 경우 내가 친구들을 초대해서 파티를 열기로 했다고 하자 그럼 파티 주최자인 내가 음식을 준비하고, 음악을 틀고, 장소를 꾸미고, 모든 것을 직접 관리해야 한다 이런 경우에 나는 파티의 모든 것을 제어하고 있다 많은 일이고, 너무 많아서 혼자서 다 하기 벅찰 수 있다 파티 플래너를 고용하..

Spring은 Spring Triangle이라고 부르는 핵심 3대요소를 제공해준다 이는 각각 IoC, AOP, PSA를 일컫는다 오늘은 POJO에 대해 알아보자 POJO(Plain Old Java Object) "오래된 방식의 간단한 자바 객체"를 의미 특정 기술, 프레임워크, 컨벤션에 종속되지 않는 자바 객체를 지칭 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 '무거운' 객체를 만들게 된 것에 반발해서 사용하게 됨 2000년 9월에 마틴 파울러, 레베카 파슨, 조쉬 맥킨지 등이 사용하기 시작함 특정 ‘기술’과 환경에 종속되어 의존하게 된 자바 코드는 가독성이 떨어져 유지보수가 어렵고 확장성이 매우 떨어지는 단점이 있었습니다. 이는 객체지향 언어인 자바가 객체지향의 장..
@EnableJpaAuditing 스프링 데이터 JPA를 사용하는 애플리케이션에서 엔티티의 생성, 수정 시간 등을 자동으로 관리할 수 있도록 하는 애너테이션 이 애너테이션을 사용하면, 엔티티가 데이터베이스에 저장되거나 업데이트될 때 자동으로 날짜와 시간 필드를 채워주는 감사 기능을 활성화할 수 있음 이를 통해 개발자는 엔티티의 생명주기 내내 발생하는 변경사항을 추적하는 코드를 직접 구현할 필요가 없어짐 따라서 @EnableJpaAuditing 어노테이션이 없을 경우 @CreatedDate, @LastModifiedDate, @CreatedBy, @LastModifiedBy와 같은 JPA Auditing 관련 어노테이션들은 활성화되지 않아서 제대로 작동하지 않음 @EnableJpaAuditing은 스프링 ..

왜 Entity에 @NoArgsConstructor(access = AccessLevel.PROTECTED)를 사용할까? @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; } 기본 생성자의 접근 제어를 Protected로 설정해놓게 되면 무분별한 객체 생성에 대해 한 번 더 체크할 수 있는 수단이 되기 때문 예를 들어 User라는 Class는 name, age, email 정보를 모두 가지고 있어야만 하는 상황일 경우 기본 생성자를 막는 것은 이를 도와주는 좋은 수단..