목록IT/Java (38)
잡동사니
안녕하세요. yeTi입니다. Spring AOP를 공부하다보면 Java의 Dynamic Proxy와 CGlib이 언급됩니다. 그래서 Dynamic Proxy와 CGlib에 대해서 정리하고 차이점을 알아보고자 합니다. 프록시 패턴 Dynamic Proxy와 CGlib은 기존 코드에 변경을 가하지 않으면서 기능을 추가할 수 있는 프록시 기술을 구현하기 위한 방법들입니다. 소프트웨어 디자인 패턴 중 하나인 프록시 패턴을 UML로 표현하면 아래 그림과 같습니다. 프록시 패턴의 주요 개념은 동일한 인터페이스를 가진 구현 클래스는 Client에서 사용할때 다형성을 활용하여 동일한 인터페이스에 다른 기능을 정의하여 사용할 수 있는 것입니다. Dynamic Proxy 프록시 패턴을 직접 구현하는 경우에 프록시 클래스를..
인프런의 더 자바, 코드를 조작하는 다양한 방법 - 백기선을 수강하면서 내용을 정리하고 간단한 후기를 남깁니다. JVM 이해하기 JVM, JRE, JDK 그리고 자바 JVM은 자바 가상 머신(Java Virtual Machine)의 약자로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행한다. 때문에 특정 플랫폼에 종속적이다. JVM자체는 바이트 코드를 실행하는 표준이자 특정 벤더가 구현한 구현체(JVM 벤더 : 오라클, 아마존, Azul 등)이다. JRE는 자바 실행 환경(Java Runtime Environment)의 약자로 자바 어플리케이션을 실행할 수 있도록 구성된 배포판이다. JVM과 핵심 라이브러리 및 프로퍼티, 리소스를 가지고 있다. (..
안녕하세요. yeTi입니다. 오늘은 Swagger에서 List 형의 Example을 표현해보겠습니다. 설치 환경OS : CentOS release 6.9 (Final)설치 버전 : Zabbix 2.2 Swagger에서 Array나 List를 사용하여 파라메터를 생성하고Example을 사용하면 다음과 같이 나타나지 않습니다. "param": [ "value1", "value2", "value3",... ], 위와같이 나타내려면 allowableValues를 활용하면 됩니다.
안녕하세요. yeTi입니다.오늘은 자바(Java) 1.8이상에서 지원하는 클래스를 활용하여 날짜를 가져오는 방법을 정리해보겠습니다. 어제 날짜 가져오기- LocalDateTime.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyyMMdd"))
안녕하세요. yeTi입니다.오늘은 Spring boot에서 스케쥴링시 사용하는 Scheduled 어노테이션의 활용방법에 대해서 알아보겠습니다. 1분마다 수행- @Scheduled(cron="*/60 * * * * *") 초기 실행 후 5초마다 수행- @Scheduled(initialDelay = 0, fixedDelay = 5000) 매일 5시에 수행- @Scheduled(cron="0 0 5 * * ?")
안녕하세요. yeTi입니다.오늘은 Java에서 Datastax 라이브러리의 Object Mapper를 활용하여 Cassandra의 Timestamp를 추가시 발생하는 CodecNotFoundException을 해결하는 방법을 알아보겠습니다. 설치 환경- Spring Boot : 1.5.4.RELEASE- Cassandra Driver : cassandra-driver-core-3.5.1 1. Object Mapper를 활용했습니다.- java.sql.Timestamp로 선언했던 변수를 java.util.Date로 변경합니다.
안녕하세요. yeTi입니다.오늘은 Spring에서 Cassandra를 연동해보려고 합니다. 설치 환경- Spring Boot : 1.5.4.RELEASE- Mybatis : 1.3.2 1. Cassandra의 SDK를 설치합니다. (저는 Gradle 활용)- compile group: 'com.datastax.cassandra', name: 'cassandra-driver-core', version: '3.5.1' compile group: 'com.datastax.cassandra', name: 'cassandra-driver-mapping', version: '3.5.1' compile group: 'com.datastax.cassandra', name: 'cassandra-driver-extras'..
안녕하세요. yeTi입니다.오늘은 Spring에서 AOP를 활용하여 SQL Log를 확인해보려고 합니다. 설치 환경- Spring Boot : 1.5.4.RELEASE- Mybatis : 1.3.2 1. Aspect에 다음과 같이 구현합니다.- @Around("execution(* org.apache.ibatis.session.SqlSession.*(String, ..))")public Object logBefore(ProceedingJoinPoint pjp) throws Throwable {Object[] methodArgs = pjp.getArgs(), sqlArgs = null;String statement = null;// SQL IDString sqlId = methodArgs[0].toStri..
안녕하세요. yeTi입니다.오늘은 간헐적으로 java.lang.NumberFormatException이 발생하는 현상에 대해 얘기하고자 합니다. 근래에 서버에서 다음과 같은 오류가 발생했습니다.- java.lang.NumberFormatException: For input string: ".77E1."- java.lang.NumberFormatException: multiple points 우연히 발생하는 위치가 SimpleDateFormat 객체로 parse하는 부분이었습니다.그래서 SimpleDateFormat 객체와 관련하여 버그를 찾던 중 Thread Safe 관련한 내용들을 찾았습니다. 1. Stack Overflow나 다른 개발자분들의 블로그에서 비슷한 상황에 대한 문제를 찾았습니다.- 주요 ..
안녕하세요. yeti입니다.오늘은 Spring Boot, Gradle 기반에서 HikariCP를 연동해보도록 하겠습니다. 설치 환경Spring Boot : 1.5.4-release 1. Gradle에 HikariCP 라이브러리를 추가합니다.- compile group: 'com.zaxxer', name: 'HikariCP', version: '3.1.0' 2. DataSourceBuilder에 DataSource 타입을 설정합니다.- DataSourceBuilder.create().type(HikariDataSource.class).build(); 3. 설정파일을 변경합니다.- extension:datasource:hikari:- url -> jdbcUrl