Spring - @GeneratedValue
2022. 9. 5. 11:30
Spring/Annotation
직접 기본키를 생성하는 방법 @Id 어노테이션 만을 사용하여 기본키를 직접 할당해주는 방법이 있다. 기본키를 자동으로 생성하는 방법 4가지 기본키를 자동으로 생성할 때에는 @Id와 @GenerratedValue 어노테이션이 함께 사용되어야 한다. IDENTITY - @GeneratedValue(strategy = GenerationType.IDENTITY) 기본키 생성을 데이터베이스에게 위임하는 방식으로 id값을 따로 할당하지 않아도 데이터베이스가 자동으로 AUTO_INCREMENT를 하여 기본키를 생성해준다. JPA는 보통 영속성 컨텍스트에서 객체를 관리하다가 commit이 호출되는 시점에 쿼리문을 실행하게 된다. 하지만 IDENTITY 전략에서는 EntityManager.persist()를 하는 시점..
Lombok @Builder
2022. 8. 29. 20:50
Spring/Annotation
Builder 패턴이란? Effective Java 규칙 2 - 조슈아 블로크 생성자에 인자가 많을 때는 빌더 패턴을 고려하라 빌더 패턴(Builder pattern) 이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. (출처: 위키백과) 빌더 패턴의 장점 1. 객체들마다 들어가야할 인자가 각각 다를 때 유연하게 사용할 수 있다. 2. 무조건 setter 생성을 방지하고 불변객체로 만들 수 있다. 3. 필수 argument를 지정할 수 있다.(보통의 경우, PK 역할을 할 Id 값이 될 것이다.) Builder 패턴은 어떻게 작성하나? 이 페이지를 들어가면 명확하게 빌더 패턴을 어떻게 작성해야하는지 알 수 있다. 빌더 패턴 예제코..
@Sl4fj 테스트에서 적용
2022. 8. 27. 17:51
Spring/Annotation
build.gradle에 lombok build option을 설정해줘야한다. testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'
@SpringBootTest
2022. 8. 23. 13:45
Spring/Annotation
[ 통합테스트를 위한 @SpringBootTest 어노테이션 ] @SpringBootTest @SpringBootTest를 사용하면 손쉽게 통합 테스트를 위한 환경을 준비해준다. @SpringBootTest는 모든 빈들을 스캔하고 애플리케이션 컨텍스트를 생성하여 테스트를 실행한다. @SpringBootTest의 어노테이션에는 다양한 값을 줄 수 있는데, 이를 살펴보면 다음과 같다. value와 properties: 애플리케이션 실행에 필요한 프로퍼티를 key=value 형태로 추가할 수 있음 args: 애플리케이션의 arguments로 값을 전달할 수 있음 classes: 애플리케이션을 로딩할 때 사용되는 컴포넌트 클래스들을 정의할 수 있음 webEnvironment: 웹 테스트 환경을 설정할 수 있음 ..
@Transactional
2022. 6. 24. 23:09
Spring/Annotation
1. 정의 @Transactional 어노테이션은 트랜잭션 처리를 위해서 Spring이 제공하는 어노테이션이다. 메서드, 클래스, 인터페이스의 트랜잭션 처리가 가능한데 이러한 방식을 선언적 트랜잭션이라 부른다. 트랜잭션 기능이 들어가 있는 프록시 객체가 생성되어 자동적으로 커밋이나 롤백을 해준다고 생각하면 된다.
@EqualsAndHashCode
2022. 6. 3. 11:30
Spring/Annotation
1. @EqualsAndHashCode 롬복(Lombok) 라이브러리에서 제공하는 @EqualsAndHashCode 어노테이션을 사용하면, Lombok이 equals 메서드와 hashCode 메서드를 생성해준다. equals : 두 객체의 내용이 같은지, 동등성(equality)을 비교하는 연산자이다. hashCode : 두 객체가 같은 객체인지, 동일성(identity)을 비교하는 연산자이다. Java bean에서 동등성 비교를 위해 equals와 hashCode 메서드를 오버라이딩 해서 사용하는데, @EqualsAndHashCode 어노테이션을 사용하면 자동으로 이 메서드를 생성할 수 있다. @EqualsAndHashCode(callSuper = true)로 설정시 부모 클래스 필드 값들도 동일한지 ..
@Component
2022. 6. 1. 17:59
Spring/Annotation
1. @Component @Component 어노테이션을 이용하면 Bean Configuration 파일에 Bean을 따로 등록하지 않아도사용할 수 있다. 빈 등록 자체를 빈 클래스 자체에다가 할 수 있다는 의미이다. @Component 어노테이션은 기본적으로 타입 기반의 자동 주입 어노테이션이다. @Autowired, @Resource와 비슷한 기능을 수행한다고 할 수 있다. 2. Java configuration 파일에서 @Component 설정하기 @Configuration 어노테이션 아래에 @ComponentScan(basePackages="패키지 경로")이라는 어노테이션을 써줌으로서 해당 패키지 안에 있는 bean 클래스의 어노테이션을 분석할 수 있도록 설정해줄 수 있다. javacb1이라는 빈..
@Configuration
2022. 6. 1. 17:48
Spring/Annotation
1. @Configuration 설정파일을 만들기 위한 애노테이션 or Bean을 등록하기 위한 애노테이션이다. @Configuration 애노테이션을 사용하면 가시적으로 '설정파일이야', 'Bean 등록할꺼야' 라는 것을 알 수 있다. 하지만 단순히 Bean을 등록하기 위한 애노테이션이 아니다. 2. 역할 Baen을 등록할 때 싱글톤(Singleton이 되도록 보장해 준다. 스프링 컨테이너에서 Bean을 관리할 수 있게 된다. package Test.sample; import Test.sample.calculate.Calculate; import Test.sample.calculate.Calculator; import Test.sample.calculate.Minus; import org.springf..
@RequestParam
2022. 5. 30. 16:44
Spring/Annotation
@RequestParam 어노테이션은 HttpServletRequest 객체와 같은 역할을 한다. HttpServletRequest에서는 getParameter() 메소드를 이용했지만 @RequestParam을 이용해서 메서드의 파라미터 값을 받는다. @Controller public class HomeController{ @RequestMapping("/add") public String add(@RequestParam("id") String id, @RequestParam("pwd") String pwd, Model model){ model.addAttribute("id", id); model.addAttribute("pwd", pwd); return "/add"; } } @RequestParam("..
@Controller, @RestController 비교
2022. 5. 30. 16:25
Spring/Annotation
-둘의 주요한 차이점은 HTTP Resopnse Body가 생성되는 방식이다. 1. @Controller 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용한다. 아래와 같은 과정을 통해 Spring MVC Container는 Client의 요청으로부터 View를 반환한다. Client는 URI 형식으로 웹 서비스에 요청을 보낸다. DispatcherServlet이 요청을 위임할 HandlerMapping을 찾는다. HandlerMapping을 통해 요청을 Controller로 위임한다. Controller는 요청을 처리한 후에 ViewName을 반환한다. DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를..
@Pathvariable
2022. 5. 27. 10:16
Spring/Annotation
1. 개요 URL 경로에 변수를 넣어주는 기능 2. 사용법 @RequestMapping의 URL 정의 부분과 Method 내의 Parameter 부분을 활용한다. @RequestMapping 어노테이션 값으로 {템플릿 변수}를 사용한다. @Pathvariable 어노테이션을 이용해서 {템플릿 변수}와 동일한 이름을 갖는 파라미터를 추가하면 된다. @RequestMapping 어노테이션에 변수를 포함하고있고, 이들 변수는 @PathVariable 어노테이션이 적용된 동일한 이름을 갖는 파라미터에 매핑된다. @RequestMapping(value = "/user/email/{email}", method=RequestMethod.GET) @RequestMapping(value = "user/email/{ema..
@Data
2022. 5. 27. 09:15
Spring/Annotation
@Data는 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode를 모두 설정해주는 유용한 어노테이션이다. @Data public class User { // ... } 클래스 레벨에서 @Data 어노테이션을 붙여 주면, 모든 필드를 대상으로 접근자와 설정자가 자동으로 생성되고, final 또는 @NotNull 필드 값을 파라미터로 받는 생성자가 만들어지며, toString, equals, hashCode 메소드가 자동으로 만들어진다.
@RequiredArgsConstructor
2022. 5. 26. 15:02
Spring/Annotation
1. @RequiredArgsConstructor 어노테이션을 사용한 생성자 주입 방법 생성자 주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거옵다는 것, 이를 보안하기 위해 롬복을 사용하여 간단한 방법으로 생성자 주입을 할 수 있다. final이 붙거나 @NotNull이 붙은 필드의 생성자를 자동 생성해주는 롬봄 어노테이션 2. 의존성 주입의 종류 1) Constructor(생성자) public class ExampleCase { private final ChocolateService chocolateService; private final DrinkService drinkService; @Autowired public ExampleCase(ChocolateService ..