2016-11-02 3 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 

Как я могу получить springmail.protocol или несколько свойств в моих классов Java?

Покушение

@Component 
public class MyBean { 

    private final String prop; 

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

настоящее время я использую этот метод, чтобы распечатать свои свойства из моего файла app.properties. Я хочу аннотировать больше, чем просто одно значение.

@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) {   
} 

Вы можете также @Autowire экземпляр org.springframework.core.env.Environment (как аргумент метода или поля экземпляра) и вызывать getProperty метод для получения значения свойств.

Ввод отдельных свойств как @Value обычно лучше, потому что он не привязывает вашу бизнес-логику к API Spring.

В 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.

Смежные вопросы