본문 바로가기
Programming/JAVA

Java application.properties 값 가져오기 (@Value)

by 8ugust 2023. 2. 28.

 

 

 

 

 

Initailization이 필수이므로 Static 메서드에 사용 불가.

 

즉 Main 메서드에서 호출 불가하므로 클래스 호출 필요.

(일반적으로 Controller & Service 단에서 사용하므로 걱정 X.)

 

클래스 호출은 New 가 아닌 생성자(Autowired) 선언하여 사용.

 

 

 

 

 

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.boot.SpringApplication;
import lombok.RequiredArgsConstructor;


@EnableScheduling
@SpringBootApplication
@RequiredArgsConstructor
public class TestApplication {
    // Static 메서드에서 사용 불가능.
    // Web Application의 경우 Container & Service 에서 사용.
    // 반드시 new가 아닌 Autowired 형태로 클래스 호출하여 사용할 것.
    // new 형태로 클래스 호출하여 사용할 경우 Value 선언했어도 Null 출력.
    
	
    @Autowired
    private final TestClass testClass;
    
    
    public static void main(String[] args) {
    	SpringApplication.run(TestApplication.class, args);
    }
    
    
    @Scheduled(fixedRate = 1000)
    public void test() {
    	testClass.callValue();
    }
}

 

 

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import lombok.RequiredArgsConstructor;


@Component
@RequiredArgsConstructor
public class TestClass {
    // Controller & Service & Component 등.
    // Bean 등록이 필요하니 Annotation 사용.
    // Initialize를 위해 Construct Annotation 사용.
    
    
    @Value("${my.value.hello}")
    private String hello;
    
    
    @Value("${my.value.world}")
    private String world;
    
    
    public void callValue() {
    	System.out.println("my.value.hello : " + hello);
        System.out.println("my.value.world : " + world);
    }
}

Application.properties 내용

 

 

 

 

 

결 과

댓글