본문으로 바로가기

new Boolean에 대해서

category Programing/JAVA 2023. 5. 23. 15:46
반응형

@Value("#(new Boolean('${aa.bb}')}")
private boolean bb 이 어떻게 동작하는지...

이 코드는 Java 언어를 사용하며, 여기서 어떤 특정한 동작을 하는 것을 보여주고 있습니다.

먼저 전체적인 설명을 드리자면,

@Value("#(new Boolean('${aa.bb}'))")
private boolean bb;

이 코드는 Java 언어에서 Spring Framework의 기능 중 하나인 SpEL(Spring Expression Language)를 사용하여, aa.bb라는 환경 변수를 Boolean 형태로 변환하여 bb라는 변수에 주입하는 것을 의미합니다.

@Value: 이 어노테이션은 Spring Framework에서 제공하는 것으로, 해당 필드에 값을 주입하는 역할을 합니다. 값은 주입 될 때 SpEL(Spring Expression Language)을 사용하여 연산되거나 변환될 수 있습니다.

"#(new Boolean('${aa.bb}'))": 이 부분은 SpEL를 사용하여 aa.bb라는 환경 설정 값이 문자열 형태로 주어질 경우, 이를 Boolean 타입으로 생성하는 코드입니다. 즉, "true", "false" 등의 문자열을 true, false라는 Boolean 값으로 변환합니다.

private boolean bb;: 이는 주입받은 Boolean 값을 저장할 필드를 의미합니다.

따라서 이 코드의 동작은 aa.bb라는 환경 설정값을 읽어와 Boolean 값으로 변환한 후 bb라는 필드에 주입하는 것입니다.

환경 설정 값(aa.bb)이 "true", "false" 등의 문자열로 제공되는 경우 이를 실제 Boolean 값으로 변환하여 사용하려는 목적으로 보입니다. 그래서 예를 들어, 환경변수 값이 "true"라면, bb는 true가 될 것이고, "false"라면 false가 될 것입니다. 또한, 문자열이 "true" 또는 "false"가 아닌 경우 new Boolean(String) 생성자는 false를 반환합니다.

 

그렇다면 여기서 궁금증...

만약 환경설정값에 aa.bb 가 없으면?

환경 설정값에서 aa.bb 키를 찾을 수 없는 경우 Spring Framework는 IllegalArgumentException을 던질 것입니다. 이는 기본적으로 @Value 어노테이션은 해당 키가 존재하지 않으면 예외를 발생시키기 때문입니다.

그러나, 이를 방지하기 위해 기본값을 설정할 수 있습니다. 예를 들어, 아래와 같이 코드를 수정하면 aa.bb가 없을 경우 기본값으로 false가 사용됩니다:

 

@Value("#{new Boolean('${aa.bb:false}')}")
private boolean bb;

이렇게 하면, aa.bb 환경 변수 값이 없거나, 빈 문자열인 경우 false가 bb 변수에 설정됩니다. 이는 또한 aa.bb 값이 "true" 또는 "false"가 아닌 다른 값으로 설정된 경우에도 동일하게 적용됩니다.

기본적으로 new Boolean(String) 생성자는 "true"라는 대소문자를 구분하지 않는 문자열인 경우에만 true를 반환하고, 그 외의 모든 문자열에 대해서는 false를 반환합니다. 따라서 "false" 또는 기본값 "false" 외의 값을 설정하려면, 해당 문자열이 정확히 "true"여야 합니다.

 

반응형

이쯤에서 new Boolean() 의 사용법에 대해 알아봅시다.

new Boolean(String)은 Java의 Boolean 클래스의 생성자 중 하나입니다. 이 생성자는 주어진 문자열이 "true"인 경우, 대소문자를 구분하지 않는 경우에만 true를 반환합니다. 그 외의 모든 문자열에 대해서는 false를 반환합니다.

아래에 몇 가지 예시를 보여드리겠습니다.

Boolean b1 = new Boolean("true");
System.out.println(b1); // prints: true

Boolean b2 = new Boolean("True");
System.out.println(b2); // prints: true

Boolean b3 = new Boolean("TruE");
System.out.println(b3); // prints: true

Boolean b4 = new Boolean("false");
System.out.println(b4); // prints: false

Boolean b5 = new Boolean("False");
System.out.println(b5); // prints: false

Boolean b6 = new Boolean("other");
System.out.println(b6); // prints: false

Boolean b7 = new Boolean("");
System.out.println(b7); // prints: false

위의 예제에서 볼 수 있듯이, "true"를 제외한 모든 값은 false로 평가됩니다.

단, Java 9 이상의 버전에서는 new Boolean(String) 생성자의 사용이 권장되지 않습니다. 대신 Boolean.valueOf(String) 메소드의 사용이 권장되며, 이 메소드도 동일한 방식으로 동작합니다.

반응형