java

JVM/Spring

[SPRING] AOP 우선순위 설정하기.

🤔서론 AOP에 대해서 공부하다가 만약 AOP가 두 개 이상이 적용되면 순서는 어떡하지란 생각이 들었다. 😃본론 순서적용 되기 전 위와 같은 AOP를 두개를 만들었다. 호출결과 어째서 이 순서대로 나왔는지는 잘 이해하지 못하겠다.. 아마 직접만든 AOP들의 순서를 Spring에서 지정해주는대로 아무렇게나 되길 원하는 개발잔 없을거다. 그러므로, 직접 순서를 정해주자! 순서적용 후 호출결과 Order 숫자가 작을수록 먼저 실행되고, 큰 수가 뒤에 실행된다. => 오더숫자가 클 수록 먼저 감싸진다. 이렇게 @Order(value = ?) 설정을 통해 내가 원하는대로 AOP 감싸는 순서를 정할 수 있다.

JVM/Spring

[SPRING] @Transactional (트랜잭션) 강제 롤백

😎본론 로직을 구현하다가 아래와 같은 상황을 마주한 적이 있었다. 트랜잭션 내에서 쿼리작업을 진행하다가 validation을 통해 걸렸을 때 에러는 발생하지 않고, 지금까지 변경된 쿼리를 롤백을 시켜야 할 떄 @Transactional 은 Exception 이 발동할 때만 롤백을 시킨다. 🤔그러면 어떻게 롤백을 시켜야할까? TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 트랜잭션이 롤백하는 방법을 강제적으로 넣어주는 것이다. setRollbackOnly 을 통해 트랜잭션이 종료되었을 때 무조건 롤백을 시키도록 설정하는 것이다. 물론 해당 로직은 리팩토링 작업을 통해 validation과 쿼리작업을 분리하였다. 당장 테스트를 해..

JVM/Spring

[SPRING] Spring AOP Proxy - @Transactonal 사용 시 주의사항

😅서론 상속받은 클래스 내에 @Transactonal 이 걸려있는 삭제 메소드가 트랜잭션이 발동을 안 하는 버그를 발견했다. 같은 클래스 내에서 프록시가 발동하지 않는다는 것은 알고 있었지만, 막상 겪으니 다른 클래스인데 뭐가 문제지..? 란 생각에 빠져서 찾는 대에 시간을 좀 사용했다.. 그 김에 작성.. 😁본론 스프링은 AOP를 하기위해 기본적으로 디자인패턴인 프록시패턴을 채택하여 사용하고 있다. AOP(Aspect Oriented Programming) 관점지향 프로그래밍이라는 뜻으로 여러 곳에서 사용되는 공통된 로직을 모듈화하여 비즈니스 로직에서 분리시켜준다. 이로써 우리는 비즈니스 로직 외에 부가적인 로직은 따로 외부에서 관리하여 유지보수 및 재사용성이 용이해진다. 프록시(Proxy) 스프링의 ..

JVM/Java

[JAVA+MSSQL]드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. - 오류 해결방법

😢서론 DB : MSSQL JDK : zulu 11 version OpenJDK 11버전으로 올린 후 기존 MsSql을 진행하던 프로젝트에서 아래와 같은 에러가 발생했다. Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 드라이버가 SSL(Secure Sockets Layer) 암호화를 사용하여 SQL Sever로 보안 연결을 설정할 수 없습니다. 오류: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]". 😎본론 🤔원인 TLS(Transport Layer Security) 전송계층보안 이라는 암호화 보안 프로토콜은 데이터 전..

Tools

Spring Tool Suite(STS) 다운로드 및 설치

👍서론 이클립스와 STS 중 고민을 했었는데, 뭐 spring 말고 다른 프로젝트를 할 것도 아니고 이미 플러그인이 깔려있는 STS를 선택해서 꾸준히 사용 중에 있다. 나중에 기회가 된다면 인텔리제이를 사용하고 싶다.. 👌본론 1. 다운로드 - 공식사이트 접속 - 해당 OS 에 맞는 버튼 클릭 - 다운로드 받은 파일 압축 풀기 - 해당 폴더로 이동 - SpringToolSutie4.exe 실행 - Workspace 경로 설정 - 끝

Tools

Open JDK 설치 (zulu jdk 11)

😒서론 2019년 1월부터 oracle jdk가 무료버전이 종료됨에 따라서 무료인 open jdk로 넘어가기 시작했다. 많은 open jdk 중 azul에서 제공하는 zulu jdk 를 설치하는 방법을 간단하게 설명하겠다. 😎본론 1. 다운로드 방법 원하는 Version , OS , Java Package 를 검색하면 쉽게 원하는 버전을 찾을 수 있다. .msi 를 자신의 환경에 맞는 파일을 선택해서 다운로드 하면 된다. 2. 설치방법 Next -> Next -> Install -> Finish 버튼 클릭 3. 설치 확인 - cmd 창 열기 - java --version 입력 설치가 정상적으로 완료되었습니다..!

JVM/Java

[Java] 객체[Object] List 중복된 ID 목록만 뽑기(추출)

😅서론 알고리즘 문제 때문인가 객체, 리스트, 배열 중복에 관련해서는 대부분 중복 값을 제거하는 설명이 대부분이었다. 가끔가다 중복 값 개수 세기 정도는 있지만 중복 목록만을 뽑는 글은 안 보여서 ... (구글링이 부족할지도) 시작! 😎본론 0. 시나리오 UserList를 받아 저장시킬 때 해당 List 내에 중복된 ID 목록을 return 시켜줘야 한다. 내가 필요한건 객체 내에 중복된 ID를 찾는 것. 00. 객체정보 aaa - 3번 / bbb - 3번 / ccc - 2번 / ddd - 1번 / eee - 1번 1. 스트림(Stream)과 Set을 사용하기 - 스트림을 통해 userId 목록만을 가져온다. - 새로만든 List 목록을 for문을 돌린다. - 아이디마다 indexOf와 lastIndex..

JVM/Java

[Java] Random보단 SecureRandom 를 사용하자.

🙄서론 Random을 사용하다가 소나큐브에서 Critical 버그가 발생했다. 그 후 알아본 내용을 정리해본다. 😉본론 - 에러 메세지 (번역은 구글번역을 통해 되었기 때문에 오역이 있을 수 있습니다..) "Random" objects should be reused "랜덤" 객체는 재사용되어야 한다. Random 값이 필요할 때마다 새 개체를 만드는 것은 비효율적이며 JDK에 따라 임의의 숫자가 생성되지 않을 수 있습니다. 효율성과 임의성을 높이려면 단일 Random을 만든 다음 저장하고 다시 사용하세요. Random()생성자는 별개의 값마다에 씨앗을 설정하려고 시도합니다. 그러나 시드가 무작위로 또는 균일하게 분포 될 것이라는 보장은 없습니다. 일부 JDK는 현재 시간을 시드로 사용하므로 생성 된 숫자..

Hyo Kim
'java' 태그의 글 목록 (3 Page)