簡體   English   中英

如何使用組件和值注釋啟動bean?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM