1. Enum 클래스 정의 Java 기본 입문서를 보면 거의 필연적으로 한번쯤은 보았던 Enum 클래스를 실무에서는 어떠한 방식으로 사용하면 좋을지에 대해서 정리하고자한다. Java의 Enum 클래스는 열거형(Enumeration)을 나타내는 특별한 형태의 클래스이다. 이러한 Enum클래스는 서로 연관된 상수들을 하나의 그룹으로 정의하고, 해당 그룹에 속한 값들을 일관성있게 다루기에 좋다. 보통 Enum 클래스는 기본적으로 아래와 같이 선언할 수 있다. public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } Enum클래스에서는 위와 같이 선언하고자 하는 상수가 Enum 클래스의 생성자로서의 역할을 한다. 위와 같..
Java 8부터 사용할 수 있는 람다(lamda) 표현식은 주로 함수형 인터페이스를 구현하는데 사용된다. 예를 들면 아래와 같이 람다를 활용하면 별도의 클래스를 작성하지 않고 일회성으로 Runnable 인터페이스의 기본적인 함수인 run() 메소드를 오버라이딩하여 일회용 구현체(?) 같은 느낌으로 작성할 수 있다. 1. 람다 표현식을 활용한 인터페이스 메소드 구현 Runnable runnable = () - > System.out.println(" I'm running in a Thread "); new Thread(runnable).start(); 2. 람다 표현식을 활용한 리스트 정렬 List names = Arrays.asList("mimi", "nanan", "BBo"); names.sort(Co..
작성해야하는 로직이 대용량의 데이터를 특정 DB에 적재하는 로직을 설계해야 한다면 대용량의 데이터를 한번에 적재하는 것보단 데이터를 일정기준으로 끊어서 적재하는 것이 바람직하다. 1. 메모리 자원의 효율적 관리 한꺼번에 적재하게되면 적재해야할 데이터들을 Insert를 실행하기 전까지는 변수에 담고 있어야하기 때문에 데이터의 양이 방대하면 방대할수록 너무나 많은 데이터를 변수에 담고 있기 때문에 메모리 자원을 너무 많이 점유할 수 있다. 따라서 일정기준을 두어서 데이터를 분할하여 Insert를 실행하고 데이터를 담고 있는 변수를 비워주고 다음 분할량을 넣고 Insert하는 식으로해서 JVM에서 Heap 메모리나 Static 메모리 자원 등을 너무 많이 점유하지 않도록 해야한다. (예제 코드) import ..
개발자들이 소스에 직접 값을 하드 코딩하는 경우가 종종있다. 하지만 이렇게 하드 코딩할 경우 하드 코딩된 변수가 많아지면 유지보수도 힘들어질 뿐더러 암호화에 사용되는 key값들을 하드코딩하는 경우 보안적인 측면에서 안전하지 못하다. 따라서 이러한 하드코딩이 필요한 변수들을 보통 properties 파일로 빼놓고 관리하는데 이 properties파일은 HashTable을 상속받아 구현한 컬렉션의 한 종류로서 key(object), value(object) 형태가 아니라 key(string), value(string) 형태로 저장하는 보다 간단한 컬렉션이다.
String 자료형에 + 연산이 있을 때마다 새로운 String 객체가 생성된다(문자열 간 + 연산이 있는 경우 자바는 자동으로 새로운 String 객체를 만들어 낸다. 따라서 메모리에 효율적인 사용을 위해서 StringBuffer를 사용하기도 한다. 1. StringBuffer StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성 sb.append("this"); sb.append("is"); sb.append("String"); String result = sb.toString(); System.out.println(result); 2. String String result = ""; result += "This"; result += "is"..
프로젝트를 진행하다보면 일정시간마다 작동해야하는 서비스가 존재할 수 있다. 처음에는 어떻게 구현해야할지 몰라서 스레드를 통해서 구현할까 생각도 했었는데 스레드를 사용하게되면 스레드에서 원하는 시간조건을 sleep 통해 걸어줘야하고 조건을 걸기가 좀 귀찮은 측면이 존재한다. 하지만 스프링에서 지원하는 scheduler를 사용하면 간편하게 구현할 수 있다. 시간조건 또한 Cron 표현식을 통해서 어렵지 않게 작성할 수 있다. 이를 사용하기위해선 servlet.xml 설정을 해야하는데 이는 생략한다. 클래스파일을 등록하는 것은 간단하다. 클래스에 @Component 어노테이션을 달아주고 메소드 앞에 스케쥴 어노테이션을 작성해주면된다. @Component public class Scheduler { /** * ..