환경설정 값을 이용하는 @Value
@Value를 통해서 application.yml / application.properties 값을 이용해보자
application.yml / application.properties
abc:
dataSourceClassName: com.mysql.cj.jdbc.MysqlDataSource
serverName: xxx.xxx.com
port: 3306
databaseName: abc
username: abc-user
password: abc-password
maximumPoolSize: 5
catalog: abc
abc.dataSourceClassName=com.mysql.cj.jdbc.MysqlDataSource
abc.serverName=xxx.xxx.com
abc.port=3306
abc.databaseName=abc
abc.username=abc-user
abc.password=abc-password
abc.maximumPoolSize=5
abc.catalog=abc
위와 같이 yml 혹은 properties에 키 / 벨류 스타일로 값을 지정해준다.
실제 사용
그리고 자바 쪽에서는 이런식으로 사용한다.
@Value("${abc.dataSourceClassName}")
private String dataSourceClassName;
@Value("${abc.serverName}")
private String serverName;
@Value("${abc.port}")
private String port;
@Value("${abc.databaseName}")
private String databaseName;
@Value("${abc.username}")
private String username;
@Value("${abc.password}")
private String password;
@Value("${abc.maximumPoolSize}")
private int maximumPoolSize;
@Value("${abc.catalog}")
private String catalog;
@Component 로 빈 등록된 클래스 여야 null안뜨고 잘 작동함에 주의
@Value에 대해 좀더 알아보자
값을 주입
@Value("Hello World")
private String greetingMessage;
이런식으로 하면 값을 주입하게 된다.
여러가지 타입 주입
@Value("1.234")
private double doubleValue; //could be Double
@Value("1234")
private Integer intValue; //could be int
@Value("true")
private boolean boolValue; //could be Boolean
@Value("2000")
private long longValue;
Default값을 설정
greeting.message의 값이 없을때 기본값으로 Greeting not found! 가 들어가게된다.
@Value("${greeting.message:Greeting not found!}")
List 형을 주입
@Value("${...}")
이런 properties값이 있을때
# application.properties
my.weekdays=Mon,Tue,Wed,Thu,Fri
이런식으로 넣는다.
@Value("${my.weekdays}")
private List<String> strList; // injects [Mon, Tue, Wed, Thu, Fri]
//Providing default value
@Value("${my.weekends:Sat,Sun,Fri}")
private List<String> strList2; // injects [Sat, Sun, Fri]
Map 형을 주입
@Value("#{${...}}")
# application.properties
database.values={url:'http://127.0.0.1:3306/', db:'mySql', username:'root', password:'root'}
@Value("#{${database.values: {url: 'http://127.0.0.1:3308/', db: 'mySql', username: 'root', password: ''}}}")
private Map<String, String> dbValues;