[英]how to initiate bean using component&value annotation?
我嘗試將 application.yml 中的值注入到名為“PROJECT_ID”的字段中。 但是,以下 Main class 僅返回 null 個值。
有人可以告訴我如何使用值和組件注釋啟動 spring bean 嗎? 這樣做的目的是在 Main 中使用 class 方法(googleTrans)。 謝謝
@Component
public class TestTranslator {
// API key field
@Value("${project.id}")
private String PROJECT_ID;
@Autowired
public TestTranslator(@Value("${project.id}") String PROJECT_ID) {
this.PROJECT_ID = PROJECT_ID;
System.out.println(this.PROJECT_ID);
}
// translation method
public String googleTrans(String text, String sourceLang, String targetLang) {
try (TranslationServiceClient client = TranslationServiceClient.create()) {
LocationName parent = LocationName.of(PROJECT_ID, "global");
TranslateTextRequest request =
TranslateTextRequest.newBuilder()
.setParent(parent.toString())
.setMimeType("text/plain")
.setTargetLanguageCode(targetLang)
.addContents(text)
.build();
TranslateTextResponse response = client.translateText(request);
for (Translation translation : response.getTranslationsList()) {
transResult = translation.getTranslatedText();
}
} catch (Exception e) {
System.out.println(e);
}
}
}
@SpringBootApplication
public class TestTranslatorApplication {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(TestTranslator.class);
OrlaTranslator orlaTranslator = context.getBean("testTranslator", TestTranslator.class);
}
}
似乎您以錯誤的方式啟動了 TestTranslatorApplication。 請將您的主 class 更改為:
TestTranslatorApplication.java
@SpringBootApplication
public class TestTranslatorApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(TestTranslatorApplication.class, args);
TestTranslator testTranslator = context.getBean(TestTranslator.class);
testTranslator.googleTrans("sameple", "en", "ko");
}
}
這里有一個提示:您可以通過在PROJECT_ID
字段上添加注釋來注入屬性,或者作為構造函數參數。 我更喜歡通過構造函數注入。
TestTranslator.java
private final String PROJECT_ID;
@Autowired
public TestTranslator(@Value("${project.id}") String projectId) {
this.PROJECT_ID = projectId;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.