일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- multi module
- Connection Pool
- 트랜잭션
- SQL 삽입 공격
- 데이터베이스
- 이펙티브 자바
- @SpyBean
- 플라이웨이트
- db
- Service Locator
- Firebase
- NotBlank
- NotEmpty
- Web
- restTemplate
- Service Locator 패턴
- @Valid
- @MockBean
- springboot
- JPA
- Spring Boot
- 디자인 패턴
- Effetive Java
- Proxy Patter
- java
- Item04
- Effective Java
- FCM
- deleteById
- @ControllerAdvice
- Today
- Total
목록SpringBoot (16)
NoTimeForDawdling
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/KMQSj/btq3DseS4vT/pblfchxMpOjxwJFUszQtQ0/img.png)
Spring Boot를 이용해서 @Valid 어노테이션을 이용한 유효성 검증 방법을 알아보려 합니다. @Valid를 이용하면, Service단이 아닌 객체 안에서, 들어오는 값에 대한 검증을 할 수 있습니다. Jakarta Bean Validation에서 제공하는 검증 어노테이션을 이용하겠습니다. 해당 어노테이션을 사용하기 위해서는 다음 의존성을 추가해줘야 합니다. implementation 'org.springframework.boot:spring-boot-starter-validation' @Valid 사용 방법 유효성 검증을 위한 간단한 DTO를 작성해 보겠습니다. @Getter @NoArgsConstructor public class UserSaveRequest { @NotNull private ..
오늘은 Spring Boot에서 RestTemplate Connection Pool을 설정하는 방법에 대해 알아보겠습니다. RestTemplate은 기본적으로 Connection Pool을 직접적으로 지원하지 않기 때문에 매번 RestTemplate를 호출할 때마다, 로컬에서 임시 TCP 소켓을 개방하여 사용합니다. 이렇게 사용된 TCP 소켓은 TIME_WAIT 상태가 되는데, 요청량이 엄청나게 많아진다면 이러한 소켓들은 재사용될 수 없기 때문에 응답이 지연될 수밖에 없습니다. 하지만 RestTemplate의 내부 구성에 의해 Connection Pool을 설정할 수 있습니다. RestTemplate에서 내부적으로 사용되는 HttpClient를 이용하면 됩니다. RestTemplate.class /** ..
RestTemplate란? RestTemplate은 Spring에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿으로, HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지키고, jdbcTemplate처럼 기계적이고 반복적인 코드를 깔끔하게 정리해줍니다. RestTemplate은 org.springframework.http.client 패키지에 있으며, HttpClient를 추상화해서 HttpEntity의 json, xml 등 제공해줍니다. RestTemplate 사용 방법 1. Bean 설정하기 RestTemplate을 사용하기 위해 일단 Bean 설정을 해줘야 합니다. 매번 RestTemplate를 new 키워드로 생성하는 것은 번거롭고 안전하지 않기 때문에 Spring에서 제공하는 D..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wvYRX/btq03uTQVzb/7tOdPZiid0LIb6nR0J7NGK/img.png)
Spring Boot에서 의존성 주입 방법으로 3가지가 있습니다. 지금부터 스프링의 의존성 주입 방법에 대해서 알아보겠습니다. 1. 생성자 주입(Constructor Injection) 생성자 주입 방법은 Spring framework reference에서 가장 권장하는 방법입니다. @Service public class SampleService { private final SampleRepository sampleRepository; @Autowired public SampleService(SampleRepository sampleRepository) { this.sampleRepository = sampleRepository; } } 생성자에 @Autowired 애너테이션을 붙여 의존성을 주입받을 수..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cMOiS8/btqXXVmQNZO/SI1dFYmN61qMD9n2HkRHK1/img.png)
Spring IoC 컨테이너를 알아보기 전에 스프링 컨테이너가 무엇인지에 대해서 알아보겠습니다. 컨테이너 Servlet 컨테이너 Servlet 컨테이너는 Servlet의 생성, 초기화, 소멸 등 Servelet의 생명주기를 관리합니다. 개발자들이 직접 Servlet을 생성하고 서비스하지 않습니다. EJB 컨테이너 EJB의 생성, 초기화, 소멸 등 EJB의 생명주기를 관리합니다. 컨테이너란? Servlet, EJB 컨테이너와 같이 컨테이너는 보통 인스턴스 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 합니다. 다시 말해, 컨테이너란 프로그래머가 작성한 코드의 처리과정을 위임받은 독립적인 존재입니다. 컨테이너는 프로그래머가 작성한 코드를 스스로 참조한 뒤 알아서 객체의 생성과 소멸을 ..
@PathVariable과 @RequestParam은 모두 HTTP 요청에서 값을 추출하는데 사용되지만 미묘한 차이가 있습니다. 이름에서 알 수 있듯이 @PathVariable은 URL에서 값을 추출하며, @RequestParam은 URL에서 요청 매개 변수를 가져옵니다. 예제 HTTP 요청: http://localhost:8080/shop/order/1001/receipts?date=2020-02-18 @RequstParam: data 매개 변수를 가져올 수 있습니다. @PathVariable: orderId, 즉 "1001"을 추출할 수 있습니다. @GetMapping(value = "/order/{orderId}/receipts") public void exam(@PathVariable("order..
Spring은 기본적으로 빈 주입을 설정을 자동으로 해줍니다. 하지만 동일한 타입을 가진 빈 객체가 두개 이상이라면 어떤 빈을 주입해야 할 지 알 수 없기 때문에 NoUniqueBeanDefinitionException을 발생시킵니다. @Qualifier @Qualifier 어노테이션은 주입할 빈 객체를 선택할 수 있도록 도와줍니다. 코드 예제를 통해 확인해 보겠습니다. MainRestTemplateConfig.class @Configuration public class MainRestTemplateConfig { private static final int READ_TIME = 3000; private static final int CONNECT_TIME = 3000; @Bean(name = "main..
Spring Boot를 사용하여 외부의 특정 값들을 주입받아야 할 때가 있다. 예로 API를 사용하기 위한 API key나 token 값이 될 수 있습니다. 이런 값들은 application.properties나 application.**yml**과 같은 파일에 적어두고 사용할 수 있고, .jar 파일을 실행하기 위한 커맨드에 직접 값을 넘겨주기도 합니다. 여기서는 외부 파일(.properties, .yml)에 있는 값들을 소스 코드에 주입하는 방법을 알아보겠습니다. properties -> yml 을 사용했을 시 이점 properties 값 주입 방법을 알아보기에 앞서 properties 대신 yml이 주는 이점을 알아보겠습니다. 1. 가독성 - yml은 계층 구조로 표현합니다. 그렇기 때문에 prop..