SpEL, Spring Expression Language

Expression Language ๋Š” ์งง๊ณ  ๊ฐ„๋‹จํ•œ ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ์„ค์ • ๊ฐ’์„ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํŠน๋ณ„ํ•œ ํ˜•ํƒœ์˜ ํ‘œํ˜„์‹์ด๋‹ค. SpEL์€ ๊ทธ ์ค‘์—์„œ๋„ ์Šคํ”„๋ง ๋ชจ๋“  ์˜์—ญ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์–ธ์–ด ํ˜•์‹

  • ์ฃผ๋กœ @Value("${config.value}") ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์„ค์ • ๊ฐ’์„ ์ฃผ์ž… ๋ฐ›๋Š”๋ฐ ํ™œ์šฉ

SpEL์˜ ๊ฐ’ ํ‰๊ฐ€ (evaluation)

  • SpelParser๋Š” "" ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋ฌธ์ž์—ด์„ ํ‰๊ฐ€ํ•ด์„œ (evaluation) ๊ฒฐ๊ณผ๊ฐ’์„ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.

  • 'Hello World' ๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด ๋˜๋ฉฐ, concat ์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

  • String ๊ฐ์ฒด๋ฅผ new ๋กœ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("'Hello World'"); 
String message = (String) exp.getValue();  // "Hello World"

Expression expWow = parser.parseExpression("'Hello World'.concat('!')"); 
String messageWow = (String) expWow.getValue();  // "Hello World!"

Expression expString = 
	parser.parseExpression("new String('hello world').toUpperCase()"); 
String messageString = expString.getValue(String.class); // "HELLO WORLD"

Bean์˜ Property๋ฅผ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

  • ๊ธฐ๋ณธ์ ์œผ๋กœ #{ } ๋ฐฉ์‹์œผ๋กœ property๋ฅผ ์„ค์ •

  • application.properties (๋˜๋Š” application.yml) ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ${ } ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์ ธ์˜ด

@Component
public class SimpleComponent {
	@Value("#{ 1+1 }")
	int two; // 2

	@Value("#{ 2 eq 2 }")
	boolean isTrue; // true

	@Value("${ server.hostname }")
	String hostName; // www.server.com

	@Value("#{ ${ server.hostname } eq 'www.server.com'}")
	boolean isHostSame; // true
}

Last updated