상세 컨텐츠

본문 제목

Spring 제공 유틸성 클래스 (StringUtils, BeanUtils)

Spring/JAVA

by Chan.94 2022. 7. 12. 08:15

본문

반응형

[ StringUtils - 문자열 관련 라이브러리 ]

파라미터 값으로 null을 주더라도 절대 NullPointException을 발생시키지 않는다.

dependency를 추가하여 사용한다.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.8</version>
</dependency>

 

isEmpty(문자열) - null 체크, 길이 체크

String sText1 = "";
String sText2 = null;
String sText3 = "DevLog";
System.out.println(StringUtils.isEmpty(sText1));	//true
System.out.println(StringUtils.isEmpty(sText2));	//true
System.out.println(StringUtils.isEmpty(sText3));	//false

 

abbreviate(문자열, 보여줄 문자 개수(... 포함)) - 문자열 축소 시 사용

보여줄 문자 개수는 4 이상 이어야 한다.

String sText1 = "DevLogStringUtilsTest";
String sText2 = "Dev";
System.out.println(StringUtils.abbreviate(sText1, 9));	//DevLog...
System.out.println(StringUtils.abbreviate(sText2, 9));	//Dev
System.out.println(StringUtils.abbreviate(sText2, 3));	//ERROR - 보여줄 문자열의 수는 4이상이어야함

 

capitalize(문자열) - 첫 글자 대문자

String sText1 = "devlog";
System.out.println(StringUtils.capitalize(sText1));	//Devlog

 

contains(문자열, 비교할 문자열) - 문자열 안에 비교할 문자열이 있는지 확인

String sText1 = "DevLog";
System.out.println(StringUtils.contains(sText1, "Dev"));	//true
System.out.println(StringUtils.contains(sText1, "dev"));	//false

 

equalsAny(문자열, 비교할 문자열...) - 문자열과 비교할 문자열들 중 같은 것이 존재하는지 확인

String sText1 = "DevLog";
System.out.println(StringUtils.equalsAny(sText1, "D", "Dev", "Log"));			//false
System.out.println(StringUtils.equalsAny(sText1, "D", "Dev", "Log", "DevLog"));		//true

 

startsWith(문자열, prefix) - 문자열의 prefix를 확인

String sText1 = "DevLog";
System.out.println(StringUtils.startsWith(sText1, "Dev"));	//true
System.out.println(StringUtils.startsWith(sText1, "log"));	//false

[ BeanUtils ]

스프링에서 기본으로 제공해주는 메소드로서 객체를 쉽고 간결하게 복사할 수 있게 해 준다.

<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
	<groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>5.3.21</version>
</dependency>

spring-beans 라이브러리에 포함되어있다.

import 할 때 [apache.commons.beanutils.BeanUtil]과 착각하는 일이 없도록 하자.

 

copyProperties(원본 객체, 복사할 객체)

DevLog orginalClass = new DevLog("홍길동", 20);
DevLog targetClass = new DevLog();
BeanUtils.copyProperties(orginalClass ,targetClass);
		
System.out.println(targetClass.getName());	//홍길동
System.out.println(targetClass.getAge());	//20

 

copyProperties(원본 객체, 복사할 객체,... 복사하지 않을 필드명)

DevLog orginalClass = new DevLog("홍길동", 20);
DevLog target2Class = new DevLog();

BeanUtils.copyProperties(orginalClass ,target2Class, "name");
		
System.out.println(target2Class.getName());	//null
System.out.println(target2Class.getAge());	//20

 

copyProperties는 언제 사용하면 좋을까

원본 객체를 복사할 때 원본 객체의 필드가 많은 경우에 사용하면 효율적이다. 물론 하나하나 setter로 값을 설정해도 된다.

이 경우 코드의 양도 방대해지고 무엇보다 번거롭다. 매우 비효율 적이고 가독성 또한 좋지 못하다.

필자는 개발의 가독성이 매우 중요하다 생각한다. 내가 작성한 코드를 언젠가는 다른 사람이 보는 경우가 생긴다라는 것을 인식하자.

 

반응형

'Spring > JAVA' 카테고리의 다른 글

[JAVA] Set 사용법  (0) 2022.07.15
공공데이터 포털 REST API - 결과값 JSON to Array  (0) 2022.07.14
[JAVA] - 람다식(Lambda Expressions)  (0) 2022.07.07
Enum 메소드 및 활용  (0) 2022.06.21
Enum 장점  (0) 2022.06.20

관련글 더보기

댓글 영역

>