JAVA: 282개의 글
/** * 이메일 masking 후 리턴 * 변환 실패시 입력값 그대로 리턴 * 이메일 아이디 앞 2자리 노출 * 마스킹 처리는 글자수 상관없이 5자리로 노출 * */ public String maskingEmail(String email){ try{ if(StringUtils.isEmpty(email) || !email.contains("@")){ return email; } String[] emailSplited = email.split("@"); if(emailSplited.length != 2){ return email; } if(emailSplited[0].length()
/** * 핸드폰번호 masking 후 리턴 * 변환 실패시 입력값 그대로 리턴 * */ public String maskingPhoneNumber(String phoneNumber){ try{ if(StringUtils.isEmpty(phoneNumber)){ return phoneNumber; } phoneNumber = phoneNumber.replaceAll("[^0-9]",""); // 숫자만 추출 if(!(phoneNumber.length() == 10 || phoneNumber.length() == 11)){ return phoneNumber; } if(phoneNumber.length() == 10){ // 10자리인 경우. 000-***-0000로 지환 return phoneNumber...
public static String toOnlyNumStr(String str){ return str.replaceAll("[^0-9]",""); } 출처: https://lovon.tistory.com/118?category=862726 [Java 개발 블로그]
/** * email 형식 검사 * @param email : 이메일 * @return boolean : 이메일 형식 여부 * */ public static boolean isEmail(String email){ boolean validation = false; if(StringUtils.isEmpty(email)){ return false; } String regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(email); if(m.matches()) { validation = true; } return validation; } 출처: https://l..
/** * 전화번호(핸드폰번호)에 구분자를 추가 * @param phoneNumber : 전화번호 * @param str : 구분자 * */ public String convertPhoneNumber(String phoneNumber, String str) { try{ if (phoneNumber == null) { return ""; } if (phoneNumber.length() == 8) { return phoneNumber.replaceFirst("^([0-9]{4})([0-9]{4})$", "$1" + str + "$2"); } else if (phoneNumber.length() == 12) { return phoneNumber.replaceFirst("(^[0-9]{4})([0-9]{4})(..
HashMap을 반복문을 통해 조회하는 방법을 확인한다. 대부분 keySet을 사용하여 조회하지만, Map에서 Key에 해당하는 값을 조회하는 비용이 추가로 발생하므로, 왠만하면 entrySet 사용을 추천한다. HashMap map = new HashMap(); map.put("a", 1); map.put("b", 2); map.put("c", 3); // keySet을 사용한 조회 (키에 해당하는 값을 Map에서 재조회하는 비용이 추가로 소모된다) for (String s : map.keySet()) { System.out.println(s + "/" + map.get(s)); } System.out.println("-----"); // entrySet을 사용한 조회 (Map 재조회에 대한 비용 소모..
플렉션(Reflection) 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩(Dynamic Loading)하여 사용하는것. Class.forName("클래스이름").newInstance 인터프리터(interpreter) 자바 컴파일러에 의해 변환된 자바 바이트 코드(.class)를 읽고 해석하는 역할 클래스 로더(Class Loader) 동적으로 클래스를 로딩해주는 역할 JIT 컴파일러(Just-In-time compiler) 프로그램이 실행중인 런타임에 실제 기계어로 변환해주는 컴파일러 동적 번역(Dynamic Translation)이라고도 불리며, 프로그램 실행 속도를 향상시키기 위해 개발됨 자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 기계어로 변환하는데 사용 JVM 실행 과정 OS로..
ModelMapper가 많이 사용하고 사용하기 편하나 성능 이슈가 있고, 아래 URL을 통해 확인할 수 있다. https://www.baeldung.com/java-performance-mapping-frameworks 따라서, 성능 이슈에 대응하기 위해 ModelMapper 대신 MapStruct를 대신 사용한다. MapStruct 설정 build.gradle 파일에 아래 의존성 추가 implementation 'org.mapstruct:mapstruct:1.3.1.Final' annotationProcessor "org.mapstruct:mapstruct-processor:1.3.1.Final" Mapper interface 클래스 생성 아래 interface 생성시 프로젝트 빌드하는 경우 클래스명 ..
해당 글은 MapStruct Library를 실무에서 사용하기 이전에 간단하게 기록했던 예제와 장, 단점을 옮겨온 글입니다. 자바 코드로 매핑하기 어떠한 라이브러리를 사용하지 않고 직접 객체 상태 간의 매핑 로직을 구현하는 방식은 약간의 수고스러움은 있으나 ModelMapper와 같이 Reflection 기반의 라이브러리보다 안전하다. entity, dto @ToString @Getter @NoArgsConstructor public class SampleEntity { private Long id; private String name; private String email; private Long age; private List sampleInfo; private String value; @Builde..
Lombok 라이브러리에서 제공하는 어노테이션 중에서 자주 사용되는 어노테이션 위주로 살펴보도록 하겠습니다. 접근자/설정자 자동 생성 제일 먼저 살펴볼 어노테이션은 @Getter와 @Setter 입니다. 아마 Lombok에서 가장 많이 사용되는 어노테이션일 텐데요. 예를 들어, xxx라는 필드에 선언하면 자동으로 getXxx()(boolean 타입인 경우, isXxx())와 setXxx() 메소드를 생성해줍니다. @Getter @Setter private String name; 위와 같이 특정 필드에 어노테이션을 붙여주면, 다음과 같이 자동으로 생성된 접근자와 설정자 메소드를 사용할 수 있어서 매우 편리합니다. user.setName("홍길동"); String userName = user.getName(..