개요 값이 없다면 에러가 나게 코드를 짜는 패턴은 흔하게 등장합니다. 에러를 나게 할 때마다 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-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 {} CacheType.java im..
JPA에서 복수키 만들기@IdClass(OhlcvHour.OhlcvHourKey.class) public class OhlcvHour { @Id private String currencyPair; @Id private LocalDateTime timeToHours; @EqualsAndHashCode @Embeddable static class OhlcvHourKey implements Serializable { @Column(columnDefinition = "varchar(10)") private String currencyPair; @Column(name = "TIME_TO_HOURS", nullable = false) private LocalDateTime timeToHours; } }복수키를 만들..
영속성 컨텍스트란? 영속성 컨텍스트를 쓰는 이유 준영속성이란? method query db와 mapping하는법 ddl-auto 옵션에 따라 작동하는 방법 join하는 방법. 1:1, 1:N, N:N @Join을 위한 domain 설계 - match와 team id를 예제로 기존에 있는 table을 jpa로 index잡는법 slow query는 어떻게 해결할 것인가? 캐싱(caching)은 어떻게 할 것인가? query dsl 어려운 점 join을 걸었을 때 속도 이슈 왜냐하면 join걸었던 table에도 모두 select를 걸어줌 데이터를 쓰지 않을 경우 손해 db가 변경 되었을 때 초보자가 만지면 데이터가 모두 날아갈 수 있다. group by문제 jpa에서 group by를 쓰기 어려움 테스트 하는..
jpa로 mysql을 쓸 때 mapping을 아래와 같이 하였다. timestamp로 mapping하기 @Column(nullable = false, name = "TIME_TO_12HOURS", columnDefinition = "TIMESTAMP(3)") private LocalDateTime timeTo12Hours; decimal로 mapping하기 @Column(nullable = false, precision = 36, scale = 18) private BigDecimal open; BigDecimal은 그냥 mapping하면 decimal로 mapping된다. public class OhlcvMaker { public Ohlcv make(String ohlcvString) { // Stri..
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(필드 인젝션)을 쓰지 말라고 경고 메세지가 나옵니다..
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-engine' } compile 'org.springframework.boot:spring-boot-s..
스프링부트 앱을 만들고 컨트롤러를 만든 다음에 이 컨트롤러가 내가 원하는대로 잘 작동 하는지 테스트 하고 싶을 때가 있습니다. 그러면 주로 쓰는 방법이 스프링부트를 띄운다음에 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값 설정하기 @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()..
spring boot 앱을 띄우고 controller를 테스트 해야 하는데 테스트 시나리오를 구성 해주어야 합니다. 그리고 spring boot는 db와 io 하는 코드가 많은데 이게 잘 되는지를 검증 해볼 필요가 있다. 과정 1. 특정 controller가 실행 되었을 때 해당 controller로 들어온 request body를 읽어서 다시 return해줍니다. 2. 만든 스프링부트 앱을 콜하면 스프링부트앱이 네이버에 콜을 보내서 받아온 값을 json으로 바꿔서 값을 뽑아서 3. pojo에 저장하고 그걸 repository를 이용해 db에 저장 build.gradle dependencies { implementation group: 'org.springframework.boot', name: 'sp..
- Total
- Today
- Yesterday
- Sh
- 이직
- 2017 티스토리 결산
- docker container tissue
- 개발자
- docker container
- Linux
- 도커컨테이너
- shellscript
- 도커각티슈케이스
- 도커티슈박스
- docker container tissue box
- 도커각티슈박스
- vim
- docker container whale
- docker container case
- 싱가폴
- 도커티슈케이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |