@NoArgsConstructor(access = AccessLevel.PROTECTED) 인스턴스를 new로 해서 만드는걸 방지한다. 이렇게 되면 생성자 변경할 경우 유지보수가 어려워진다. 아래생성자는 @NoArgsConstructor(access = AccessLevel.PROTECTED) 붙이면 할 필요가 없다. protected OrderItem() { }
트랜잭션 처리방법 트랜잭션 처리방법 스프링에서는트랜잭션처리를 지원하는데 그중어노테이션 방식으로@Transactional을 선언하여 사용하는 방법이 일반적이며,선언적 트랜잭션이라 부른다. 클래스, 메서드위에@Transactional이 추가되면, 이 클래스에 트랜잭션 기능이 적용된 프록시 객체가 생성된다. 이 프록시 객체는@Transactional이 포함된 메소드가 호출 될 경우,PlatformTransactionManager를 사용하여 트랜잭션을 시작하고, 정상 여부에 따라 Commit 또는 Rollback 한다. [ [Spring] Transactional 정리 및 예제 [Spring] @Transactional 정리 및 예제 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 스프링 어노테이션 @Transa..
클래스명 변경 : Shift + F6 해당 클래스의 TestCase 만들기 : Shift + Ctril +T 부분 클래스 생성 : Ctrl + Alt + M Book book = new Book(); book.setName("시골 jpa"); book.setPrice(10000); book.setStockQuantity(10); em.persist(book); 를 아래와 같이 함수로 만들어준다. private Book createBook() { Book book = new Book(); book.setName("시골 jpa"); book.setPrice(10000); book.setStockQuantity(10); em.persist(book); return book; } 변수 자동생성 : Ctrl + ..
📝 [Spring] 스프링 PSA 1. PSA(Portable Service Abstraction) Spring은 Sprng Triangle이라고 부르는 세가지 개념을 제공해준다. 각각 IoC, AOP, PSA를 일컫는다. Spring의 Petclinic 예제를 보면 서블릿 어플리케이션임에도 불구하고 서블릿이 전혀 존재하지 않는다. 단지 @Controller 애노테이션이 붙어있는 클래스에서 @GetMapping, @PostMapping과 같은 @RequestMapping 애노테이션을 사용해서 요청을 맵핑한다 실제로는 내부적으로 서블릿 기반으로 코드가 동작하지만 서블릿 기술은 추상화 계층에 의해 숨겨져 있는 것이다. 이렇게 추상화 계층을 사용해서 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것..
📝 스프링 AOP 개념 및 적용 방법 | 1. AOP(Aspect Oriented Programming) Spring은 Spring Triangle 이라고 부르는 세가지 개념을 제공해준다. 각각 IoC, AOP, PSA를 일컫는다. AOP는 Aspect Oriented Programming의 약자로 '측면/양상 지향적인 프로그래밍' 이라는 의미이다. class A { method a(){ AAA a가 하는 일 BBB } method b(){ AAA a가 하는 일 BBB } } class B { method c(){ AAA c가 하는 일 BBB } } 위와 같이 동일한 일을 하는 AAA ,BBB가 여러군대에서 사용되고 이렇게 흩어져 있으면 코드 변경이 필요한 경우 모든 부분을 일일히 수정을 해주어야 한다...
| 의존성 주입(DI, Dependency Injection)의 세가지 방법 Spring은 @Autowired애노테이션을 이용한 다양한 의존성 주입 방법을 제공한다. @Autowired 애노테이션은 Spring에게 의존성을 주입하라는 지시자 역할로 쓰이는데 생성자, 필드, Setter 에 붙일 수 있다. 1. 생성자 주입 @Controller public class OwnerController { private final OwnerRepository owners; @Autowired //
| 빈(Bean) Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean) 이라고 부른다. new 연산자로 생성한 객체는 빈이 아니다. ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다. 즉 Spring에서의 빈은 ApplicationContext가 알고 있는 객체, ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다 | 빈(Bean)을 등록하는 방법? Component Scanning* 직접 XML이나 자바 설정 파일에 등록 (But, XML로 사용할 경우 빈을 일일이 다 등록 해줘야 하는 불편함이 있다. 그래서 등장한 것이 Component Scan 이다.) | Component Scan 을 통한 등록 방법 @ComponentSc..
엔티티는 가급적 Setter를 사용하지 말자 - 변경포인트가 많아서 유지보수가 어렵다 모든 연관관계는 지연로딩으로 설정 - 즉시로딩(EAGER)은 예측이 어렵다. 특히, JPQL은 실행할 때 N+1문제가 자주 발생한다 - ManyToOne 은 Default가 EAGER 이기 때문에 안정성을 위해서 LAZY 로 바꿔야 된다.
| Spring REST Docs Spring REST Docs는 REST API 에 대한 정보를 제공하는 Docs를 생성할 수 있는 Spring에서 제공하는 툴 이다. Spring MVC Test 코드 작성 시 추가적으로 Docs를 생성하는 코드를 첨가하여 생성할 수 있다. REST Docs 는 REST 아키텍처의 self-descriptive 규약을 지키기 위해 REST API의 리소스 및 API 명세 그리고 요청과 응답 데이터의 설명까지 포함된 문서를 만들 수 있게 해준다. 참고 URL : https://docs.spring.io/spring-restdocs/docs/2.0.4.RELEASE/reference/html5/ Spring REST Docs Document RESTful services ..
| Spring HATEOAS HATEOAS 는 Hypermedia As The Engine Of Application State 의 약자로 REST 아키텍처의 한 구성요소이다. 이 HATEOAS를 통해서 어플리케이션의 상태를 전이할 수 있는 매커니즘을 제공할 수 있다. 참고 URL : https://docs.spring.io/spring-hateoas/docs/current/reference/html/ Spring HATEOAS - Reference Documentation Example 47. Configuring WebTestClient when using Spring Boot @SpringBootTest @AutoConfigureWebTestClient (1) class WebClientBased..
| Spring REST API 비즈니스 로직 적용 및 JUnitParam을 이용한 테스트 JUnitParam 테스트 라이브러리는 JUnit의 각 Test 메서드에 파라미터를 쓸 수 있게 함으로써 테스트 코드량을 줄이고 유지보수를 쉽게 해주는 유용한 라이브러리 이다. 테스트 할 전제조건 1. basePrice와 maxPrice 가 모두 0이면 free=true 그 이외에는 free=false 2. location 이 null 이거나 문자열의 길이가 0일 때 offline = false 그 외에는 offline = true 참고 URL : https://github.com/Pragmatists/JUnitParams Pragmatists/JUnitParams Parameterised tests that do..
| Bad Request 응답 본문 만들기 의존성 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-hateoas org.springframework.boot spring-boot-starter-web org.projectlombok lombok true org.modelmapper modelmapper 2.3.1 org.springframework.boot spring-boot-starter-test test com.h2database h2 org.springframework.restdocs spring-restdocs-mockmvc test 설정 application.yml ..