2016-11-02 45 views
1

屬性摘要。如何從Application.properties中檢索值?

# Email (MailProperties) 
spring.mail.default-encoding=UTF-8 # Default MimeMessage encoding. 
spring.mail.host= # SMTP server host. For instance `smtp.example.com` 
spring.mail.jndi-name= # Session JNDI name. When set, takes precedence to others mail settings. 
spring.mail.password= # Login password of the SMTP server. 
spring.mail.port= # SMTP server port. 
spring.mail.properties.*= # Additional JavaMail session properties. 
spring.mail.protocol=smtp # Protocol used by the SMTP server. 
spring.mail.test-connection=false # Test that the mail server is available on startup. 
spring.mail.username= # Login user of the SMTP server. 
some.prop = testingTesting 

如何檢索我的java類中的springmail.protocol或多個屬性?

我目前使用這種方法從我app.properties文件打印出來我的財產

@Component 
public class MyBean { 

    private final String prop; 

    @Autowired 
    public MyBean(@Value("${some.prop}") String prop) { 
     this.prop = prop; 
     System.out.println("================== " + prop + "================== "); 
    } 
} 

嘗試。我想註釋的不僅僅是一個值。

@value "{some.prop, second.prop, 3rd.prop}") String prop, propOne, Prop2 

是否可以調用多個值?另外,在我實例化這個類中的屬性後,如何在另一個類中使用這些屬性?

+0

「另外,在我實例化這個類中的屬性後,如何在另一個類中使用這些屬性?」 - 通過將它們作爲參數傳遞,您可以在類之間傳遞任何數據。 – eis

+0

你試過注入MailProperties嗎? –

+0

@eis你能告訴我一個通用/簡單的例子嗎? myBean mb = new myBean(some.prop,second.prop); mb.getsome.prop? – Jesse

回答

2

你可以很容易註釋多於一個參數

@Autowired 
public MyBean(
    @Value("${some.prop}") String prop, 
    @Value("${some.prop2}") String prop2) {   
} 

你也許還實例的org.springframework.core.env.Environment@Autowire(如方法參數或實例字段),並調用getProperty方法來獲得屬性的值。

將單個屬性注入@Value通常會更好,因爲它不會將業務邏輯與Spring API綁定。

在Spring Boot中,您還可以在類上使用註釋@ConfigurationProperties(prefix =「connection」)來注入多個屬性。詳情請參閱http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties