본문 바로가기

Spring/Spring Boot(스프링 부트)

(34)
스프링 부트 @RequiredArgsConstructor 애노테이션 @Slf4j @Controller @RequestMapping("/api/v1/data/invalid_request/") @RequiredArgsConstructor public class InvalidRequestController { private final InvalidRequestService invalidRequestService;필드 DI를 제발좀 쓰지 말라고 하도 뭐라고 해서 컨스트럭터 di로 바꾸고 있는데 final로 선언을 해주면 그 부분을 자동화 해주는 애노테이션이 있다는 것을 알게 되었습니다. 위와 같이 씁니다. 그러면 @Autowired도 안써도 돼고 constractor도 없어도 됩니다. 그런데 final을 꼭 붙여야 합니다. 안그러면 null나와욤
WebFlux test get, get with param, post, post with param Parameter 2개 이상 보내기 @RestController @RequestMapping(value = "/api/v1/order") public class DistributeController { // http://localhost:8080/api/v1/order/distribute?id=1111&name=krk 이렇게 요청한다. @GetMapping(value = "/distribute") public String getOrder(@RequestParam int id, @RequestParam String name) { System.out.println(id); System.out.println(name); }결과 1111 krkTransferController.java @Slf4j @RestCo..
Optional .orElseThrow(Function) 사용법 개요 값이 없다면 에러가 나게 코드를 짜는 패턴은 흔하게 등장합니다. 에러를 나게 할 때마다 if조건을 넣어서 특정 조건일때 혹은 아닐때 에러가 나게 한다면 에러처리가 귀찮고 잘 안하게 됩니다. 하지만 orElseThrow()를 쓴다면 이 작업이 조금 편해져서 에러에 대해 생각할 시간과 인내심을 확보 할 수 있습니다. 아래 orElseThrow()를 쓰는 경우와 안쓰는 경우를 비교해보시기 바랍니다. orElseThrow()쓰는 경우 import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.Stack; public class StTest { public static String get() thr..
spring boot cache 넣기 Spring Boot에 Cache넣기 spring-boot-starter-cache만 import 하면 ConcurrentHashMap이 캐쉬 클래스가 된다.이 클래스는 expire를 수동으로 해줘야 한다.그래서 expire time을 줄 수 있는 caffein cache를 쓰는 것. pom.xml org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine 2.6.2 main(){@SpringBootApplication @EnableCaching public class ChartDataServer extends SpringBootServletInitializer {} ChartDataService.jav..
Spring Boot Field Injection 피하기 Spring에서 bean을 import 할 때 field injection은 피하는게 좋습니다. 결론부터 말씀드리면 아래와 같이 생성자에 파라메터로 넣어주면 됩니다. @Autowired public MessageReceiveWorker(AmazonSQS sqsClient, ServerConfig serverConfig) { this.sqsClient = sqsClient; this.serverConfig = serverConfig; } intelli j에서 아래와 같이 쓰면 @Autowired private AmazonSQS sqsClient; @Autowired private ServerConfig serverConfig; Field Injection(필드 인젝션)을 쓰지 말라고 경고 메세지가 나옵니다..
Spring Boot 앱 빌드하고 실행하기 with jpa, h2 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engin..
스프링 부트 API 빌드 & 테스트 스프링부트 앱을 만들고 컨트롤러를 만든 다음에 이 컨트롤러가 내가 원하는대로 잘 작동 하는지 테스트 하고 싶을 때가 있습니다. 그러면 주로 쓰는 방법이 스프링부트를 띄운다음에 localhost:8080을 띄우고 localhost:8080/deposit/ 이런식으로 api를 바로 콜하는 식으로 하는 경우가 많은데요 이 http request도 스프링부트 test에서 만들어주는 기능이 있어서 한번 해봅니다. 순서 1.소스코드 2.Project빌드 3.Controller추가 4.Vo형태로 리턴하는 Controller추가 5.List형태로 리턴하는 Controller추가 소스코드는 아래 리포지토리에 있습니다. https://github.com/Kyeongrok/spring_boot_controller GitHu..
스프링부트 spring.profiles.active에 default값 설정하기 스프링부트 spring.profiles.active에 default값 설정하기 @Slf4j @EnableScheduling @SpringBootApplication public class Server { public static void main(String[] args) { System.setProperty("spring.profiles.default", "local"); // SpringApplication.run(Server.class, args); Properties p = System.getProperties(); Enumeration keys = p.keys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement()..