반응형 IT/Java394 java.util.Date / java.sql.Date 차이 자바에서 항상 Date를 사용할 경우 import 에서 잠깐 고민이 되고 머뭇거릴때가 있다. 이유는 제목에서 처럼 Date 가 두가지가 존재하기 때문이다. 의미상이라면 어떤 클래스를 사용하든 상관없지만, 둘의 차이는 엄연히 존재한다. java.util.Date 유닉스 시간(1970년 1월 1일 00:00:00 GMT)으로 부터 지정된 시간(milliseconds)을 년/월/일/시/분/초의 형태로 갖고 있다. 자바 11기준으로는 아래와 같이 생성자들이 존재한다. Date() Date(long date) Date(int year, int month, int date) Date(int year, int month, int date, int hrs, int min) Date(int year, int month,.. 2023. 12. 5. [AOP] JoinPoint / ProceedingJoinPoint 차이 이전 포스팅에서 AOP에 대해 다룬 포스팅도 있고, pointcut에 대해 다룬 글들이 있다. 자세한 내용은 아래 참고 포스팅을 참고 바란다. 예제에서는 대부분 JoinPoint 로만 설명을 했으나 ProceedingJoinPoint 에 대해서 잠시 다루려고 한다. JoinPoint JoinPoint 는 테스트 코드로도 많이 다뤘었고 메서드에 대해서는 아래와 같다. (인터페이스는 호출되는 대상 객체, 메서드, 전달 파라미터 목록에 접근 할 수 있는 메소드 제공) 메서드 접근하는 영역 Signature getSignature() 호출되는 메서드에 대한 정보 Object getTarget() 대상 객체 Object[] getArgs() 파라미터 목록 Signature에 대해서도 아래와 같다. (인터페이스는 .. 2023. 12. 2. Boolean, boolean 차이 이전 포스팅에서 비슷한 내용으로 int 와 long 에 대해서도 다룬적이 있었다. 자세한 내용은 참고 포스팅 참고 바란다. 이번 포스팅은 boolean 형에 대해서 다뤄볼 것이다. 결론 먼저 말하면 boolean 과 Boolean 은 결과는 같으나, dto에서 값을 가져오는 방식이 다르다. boolean 의 경우엔 public boolean isStatus() { return isStatus; } 으로 가져올수 있고 Boolean 의 경우엔 우리가 아는 getter 방식인 public boolean getStatus() { return isStatus; } 으로 가져올 수 있다. 참고 포스팅 https://thenicesj.tistory.com/77 Long,long / int,Integer 차이 자료형.. 2023. 11. 19. 추가 설정 파일 사용하기(properties / yml) 이전 포스팅에서 properties / yml 에 대해서 다룬적이 있다. 자세한 내용은 아래 참고포스팅 참고 바란다. 기본적으로 spring 을 생성하면 하나의 파일이 존재하는데 환경에 따라서 다르게 참고포스팅처럼 설정할순 있지만 메인 yml은 관리자가 관리하며 다른 개발자들에게 열어주지 못하는데, 추가로 설정을 넣어야 할 경우 필요한 방법이다. application.yml 과 동일한 위치에 자유롭게 이름을 선택하여 abc.yml 파일을 생성한다. 그리고 application.yml 메인에서 abc 를 import 만 해주면 된다. spring: config: import: abc.yml properties도 동일하게 해주면 된다. spring.config.import=abc.properties 참고 .. 2023. 11. 17. @Transactional 사용시 주의 사항4 (propagation(전파속성) 에 대해) 이전 포스팅에서 Transactional annotation 설명 시 propagation에 대해 다룬적이 있다. 간단히 언급만 되었어서 자세하게 하나하나 설명이 들어갈 포스팅이다. 사용법은 아래와 같다. @Transactional(propagation = 아래 속성) 속성 설명 비고 Propagation.REQUIRED 따로 지정을 해주지 않으면 default 부모 트랜잭션 내에서 실행하며 부모가 없으면 새롭게 생성을 하여 자신이 부모가 된다. 예외발생시 예외가 전파되며 상위로 올린다. Propagation.REQUIRES_NEW 실행할때 새롭게 Transactional 을 생성한다. 기존에 부모 Transactional 로 묶여있더라도 별개로 작동하여 부모와는 무관하게 돌아간다. 예외 발생해도 상위 .. 2023. 11. 14. @TransactionalEventListener 란? 이전에 포스팅에서 Transactional 에 대한 포스팅과 EventListener 에 대해 다룬 포스팅이 있다. 먼저 읽고 오는것을 추천한다. 아래 참고 포스팅 참고바란다. EventListener 부분을 확장해서 Transactional 을 입혔다고 생각하면 된다. 아래 예시코드에서 설명하면. private final ApplicationEventPublisher eventPublisher; private final EventRepository repository; @Transactional public void transactionalListener() { InsertTableEntity entt = new InsertTableEntity(); entt.setId("2"); entt.setName.. 2023. 11. 13. @EventListener 란? (ApplicationEventPublisher, publishEvent) 현재는 다른 좋은 방법들이 많아서 잘 사용되지 않지만 개념에 대해서 알고 가고자 포스팅을 남긴다. 기존에 아래 사진과 같은 비지니스가 있다고 하면 하나의 비지니스가 너무 길고 간단하게 봐야 이정도지 서로 물리고 엮여있는게 많다면 그 비지니스 하나는 엄청나게 커지고 유지보수 측면에서도 어렵고 복잡할 것이다. 그래서 요즘엔 MSA 로도 많이 나오지만 비지니스 관점에서 보면 아래 그림과 같이 바뀌고 있다. event 발생 여부에 따라 어떤 메서드를 동작 시킬지에 대해 이런 방식으로 흘러간다. 요즘엔 AOP로 설정을 해두거나 Kafka, MQ 등으로 설정을 하곤 한다.(참고 포스팅 참고) 그럼 자바에서는 이 이벤트를 구현하기 위해서는 ApplicationEventPublisher @EventListener 이 .. 2023. 11. 12. equals 함수 (equalsIgnoreCase) 자바에서 equals 함수는 String 을 비교하는데 사용이 된다. 예를들어 System.out.println("A".equals("A")); //true System.out.println("A".equals("B")); //false 이렇게 출력이 된다. 사용하면서 몇가지 주의점과 팁을 적어보려고 한다. 주의점 - NullpointException 발생 회피 만약 아래와 같은 코드가 있다고 하면 String text = null; System.out.println(text.equals("A")); 이 경우는 null을 어떤것과 비교하려고 하기에 에러가 발생한다. 그래서 우회 하려면 System.out.println("A".equals(text)); 이렇게 해주면 nullpoint exception 을.. 2023. 11. 9. if/else 동작 방식 개발을 할때 중요한 요소 중 하나는 퍼포먼스이다. 동일한 input 과 동일한 output이 나오는 로직이지만 개발 방식에 따라 결과가 빠르거나 늦을수도 있다. 비지니스 로직을 개발하며 많이 사용하는것 중 하나가 바로 if / else if / else 인데 이에 대해서 적어보려고 한다. if else 순서 조회 아래와 같은 코드가 있다고 해보자. if (transactionA()) { a=1; }else if (transactionB()) { a=2; }else { a=3; } 로직 설명은 패스하고 만약 TransactionA -> 100 sec. TransactionB -> 50 sec. TransactionC -> 10 sec. 가 각각 걸린다고 하면 else까지 오기에는 150초 이상이 걸리게 된.. 2023. 11. 8. 이전 1 ··· 12 13 14 15 16 17 18 ··· 44 다음 반응형