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);
}
}
결 과
'Programming > JAVA' 카테고리의 다른 글
Java Collection Framwork (자료구조) (List / Set / Map) (0) | 2022.10.05 |
---|---|
[VSCode] invalid source release (0) | 2022.09.16 |
[MyBatis] Spring Boot Gradle 에 MySQL 연동하기 (2) | 2022.03.03 |
[JAVA] VSCode에 Spring Boot 설치 (0) | 2022.02.26 |
[JAVA] VSCode JAVA 개발환경 설정 (0) | 2022.02.26 |
댓글