일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GC
- mysql
- 쿠버네티스
- 자바
- 보조스트림
- spring
- list
- MSA
- 이스티오
- jvm
- 백준
- 스트림
- Collection
- Kotlin
- 토비의 스프링
- Java
- Stream
- SpringBoot
- redis
- JPA
- IntellJ
- 자바 ORM 표준 JPA 프로그래밍
- thread
- 토비의 스프링 정리
- Real MySQL
- Stack
- gradle
- K8s
- OS
- 스프링
- Today
- Total
목록전체 글 (151)
인생을 코딩하다.
요즘 읽기 좋은 코드, 헙업할 때 좋은 코드란 뭘까에 관해 많이 고민중이고.. 공부하려고 하는중인데 그래서 디자인 패턴에 관해 정확히 알아둬야 겠다는 생각이 들어 공부하고 지식 공유합니다. 디자인 패턴이란 진짜 간단히 말하면 알아보기 쉽게, 즉 효율적인 의사소통을 위한 코드? 그러한 방법들을 몇 가지의 일종의 패턴으로 분류해 놓은 것 또 템플릿 메소드 패턴이란 디자인 패턴 중 하나 템플릿 메서드를 공부하기 전에, 추상 클래스,추상 메서드에 관해 모른다면 먼저 공부해보시길 바라며... 템플릿 메서드란? 프레임워크에서 설계를 할 때, 흔하게 사용되는 방법 중 하나 - 어떤 작업을 처리할 때 일부분을 서브 클래스로 캡술화(Aihyungil.java, ManualHyungil.java)하여 전체 일을 수행하는 ..
방향성 및 동기부여를 위해 유튜브에서 이동욱님의 개발자가 되기까지의 과정 동영상을 보다가 유튜브 알고리즘에 의해 JetBrains korea 채널의 동영상을 시청하게 되었습니다. 거기서 얻은 인텔리제이 편하게 쓰는 팁 중 하나입니다. 변수, 메서드명 작성할 때, 파파고로 번역해서 작성하시는 분들 많으시죠? 이제 귀찮게 그럴 필요 없습니다. settings - Plugins Install 한 후 인텔리제이 재시작을 합니다. 클래스를 만들고 실험해봅니다. Alt + 1 / 괄호에 모르고 Alt를 또 적었는데... 원래 Option을 적으려고 했는데.. 실수로... 맥 Option 윈도우 Alt 팝업창 Alt + 2 번역 후 Replace 맘에 드는거 고르면 됩니다. Alt + 3 번역창 달달하네~~
요즘 공부하면서 이론이 많이 부족하다고 느꼈고, 이론 공부가 정말 중요하다는 생각을 많이 했다. 그러다가 SpringBoot와 Spring 차이를 대강 알고만 있었지, 누가 물어보면 정확히 말을 하지 못할 것 같아서 유튜브, 구글링 등을 통해 이론 학습을 좀 해보았다. 궁금해서 스프링 공식 문서를 살펴보다가, docs.spring.io/spring-framework/docs/current/reference/html/overview.html#overview-spring Spring Framework Overview The term "Spring" means different things in different contexts. It can be used to refer to the Spring Framew..
@ExceptionHandler를 이용해서 메소드마다 예외처리를 해주다보니 같은 에러를 처리할때 마다 중복된 코드를 쓰게되었다. 중복된 코드를 쓰다보니 코드도 길어지고 유지보수 할 때 불편한 점이 많았다. 스프링 프레임워크의 큰 장점중에 하나가 AOP인데 중복된 코드를 쓴다는 것은 AOP에 어긋난다는 생각이 들었다. 그래서 나는 재사용성을 높여 중복된 코드를 없애 객체 지향적인 코드를 구현하고 싶었고, (메서드는 한 가지 일만 해야하기 때문에) 에러를 한 곳에서 처리해서 controller 전역에 적용되는 예외처리 구문을 만들어야겠다는 생각을 하였다. 그래서 공부하던 중 ControllerAdvice annotation의 @ControllerAdvice와@RestControllerAdvice을 알게되었고..
흔히 알려진 스프링의 장점들 중 하나인 AOP란 것이 있다.'관점 지향 프로그래밍' 이라고 한다. AOP에 관해 공부하던 중, 갑자기 내가 만든 메소드들에 성능을 측정해보고 비교해 보고 싶었다.그래서 AOP를 이용하여 메소드들의 성능을 측정해 볼 수 있다는 것을 알게되어서 구글링을 통한 학습을 하였고 AOP를 적용해서 2개의 메소드에 시간을 시간을 측정해보았다. LogExecutionTime.java와 LogAspect.java는 Controller.java와 같은 패키지에 생성했다. bulid.gradle에 dependancy를 추가해줘야 한다 implementation 'org.springframework.boot:spring-boot-starter-aop' @Target로 어노테이션을 메서드에 사용..
예외처리 할 떄, Controller에서 이런식으로 try { } ~ catch { } 문으로 처리를 해주면 Status가 200으로 떠서 클라이언트에서는 이 정보가 처리가 된 것인지, 안 된 것인지 알기가 어렵기 떄문에 곤란하다. 위를 보면 Headers, Content type, Body에 아무 것도 들어오지 않아서 어떻게 처리가 되었는지 알 수가 없다. 그래서 조금더 나은 방법으로, @ExceptionHandler를 지정해준다. @ExceptionHandler같은 경우는 @Controller, @RestController가 적용된 Bean내에서 발생하는 예외를 잡아서 하나의 메서드에서 처리해주는 기능을 한다. 인자로 캐치하고 싶은 예외 클래스를 등록해준다. @ExceptionHandler를 이용해서..
예외를 처리할 때 로그를 활용하는 것 이외에 checked exception을 unchecked exception으로 변경해서 던져야 하는 경우가 있었다. 이를 자바에서는 RuntimeException 클래스를 상속받아서 할 수 있다. @Transactional public void modify(Long id, String name) { // 이름 정보만 받아서 해당로직에 업데이트 Person person = personRepository.findById(id).orElseThrow(() -> new RuntimeException("아이디가 존재하지 않습니다")); person.setName(name); personRepository.save(person); } orElseThrow(() -> new R..
Mockito를 활용해 단위테스트를 진행할 떄 PersonService.java에서 person.set(personDto) 로직을 주석처리 하였는데도 TestCode가 작동을 한다. 중요 로직을 주석처리 하였는데 오류를 검출하지 못한채로 검증을 해버리게 된다. 이유는 PersonServiceTest.java에서 verify(personRepository, times(1)).save(any(Person.class)); 어떠한 로직이든 person class면 괜찮다고 생각하기 때문이다. set을 주석처리 하여서 personDto가 들어가지 못하기 때문에 값은 다 null이 들어가지만, 밑에서 save가 되기 때문에 통과 되어버린다. 그래서 오류 검출을 하지 못하게 된다. 이 문제를 해결하기 위해 Argum..