스프링 5

Spring Boot JPA 에서 enum type 사용하기

최근 spring boot + kotlin + jpa를 이용해서 개인(?) 프로젝트를 하고 있는데,JPA에서 enum type을 이용할 때 주의점을 알게 되어 기록해본다. Enum Type Column을 만들자테이블(엔티티) 컬럼 하나를 아래와 같이 enum type으로 선언하고 빌드하게 되면 enum 컬럼의 constaint인 CHECK가 자동으로 생성되는데 생각했던 것과 다른 형식으로 만들어지게 된다.enum class TestEnum { HELLO, THIS, IS, TEST}@Entityclass TestTable ( /* pk */ @Id var no: Int, /* 타입 */ @Column(nullable = false) var enum: Tes..

스프링 2024.08.26

[스프링] @RequiredArgsConstructor 생성자 주입 애노테이션

스프링 DI(Dependency Injection) 방식인 Field 주입, Setter 주입, 생성자(Constructor)주입 중 생성자 주입을 코드 없이 자동으로 설정해주는 애노테이션이다. @RequiredArgsConstructor는 초기화 되지 않은 final 필드나 @NotNull이 붙은 필드에 대해 생성자를 생성해준다. 기존 생성자 주입 public class SampleController { private FrstSampleService frstSampleService; private SecSampleService secSampleService; @Autowired public SampleController(FrstSampleService frstSampleService, SecSample..

스프링 2023.11.15

스프링5 프로그래밍 입문 - AOP 프로그래밍

AOP (Aspect Oriented Programming) aspectjweaver 의존을 추가해야 함 (스프링이 AOP 구현 시 사용하는 모듈) spring-context 모듈을 추가하면 spring-aop 모듈도 함께 의존 대상에 포함 asepctjweaver 모듈은 AOP를 설정하는데 필요한 애노테이션 제공 프록시 부가적인 기능 구현을 위해 기존 코드를 수정하지 않고, 코드 중복도 피하기 위해서 프록시 객체 사용 핵심 기능의 실행은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체를 프록시라고 부름 프록시의 특징이 핵심 기능은 구현하지 않는다는 것 핵심 기능을 구현하지 않는 대신 여러 객체에 공통으로 적용할 수 있는 기능 구현 실제 핵심 기능을 실행하는 객체는 대상 객체라고 부름 AOP 여러 객..

스프링 2023.10.28

스프링5 프로그래밍 입문 - 스프링 DI

의존이란? DI (Dependency Injection), 의존 주입이라고 함 객체 간의 의존을 의미 import java.time.LocalDateTime; public class MemberRegisterService{ private MemberDao memberDao = new MemberDao(); public void regist(RegisterRequest req){ // 이메일로 회원 데이터(Member) 조회 Member member = memberDao.selectByEmail(req.getEmail()); if(member != null){ // 같은 이메일을 가진 회원이 이미 존재하면 익셉션 발생 throw new DuplicateMemberException("dup email" + ..

스프링 2023.10.02

스프링5 프로그래밍 입문 - 스프링 프로젝트 시작하기

메이븐 의존 설정 org.springframework spring-context 5.0.2.RELEASE 메이븐은 한 개의 모듈을 아티팩트라는 단위로 관리 spring-context라는 식별자를 가진 5.0.2 RELEASE 버전의 아티팩트에 대한 의존을 추가 의존 추가는 자바 어플리케이션에서 클래스패스에 spirng-context 모듈을 추가한다는 것 (jar 파일 추가) 메이븐 리포지토리 메이븐 로컬 리포지토리에서 [그룹 ID]\[아티팩트 ID]\[버전] 폴더에 아티팩트ID-버전.jar 형식의 이름을 갖는 파일이 있는지 검사 로컬 리포지토리에 파일이 없으면 메이븐 원격 중앙 리포지토리로부터 해당 파일을 다운로드하여 로컬 리포지토리에 복사한 후 사용 의존 전이(Transitive Dependencies..

스프링 2023.10.02