2015-05-29 6 views

Antwort

144

Sie die @Value Annotation verwenden können und die Eigenschaft zugreifen in welchen auch immer Spring-Bean Sie

@Value("${userBucket.path}") 
private String userBucketPath; 

Der Externalized Configuration Abschnitt des Frühlings-Boot-docs verwenden, erklärt all Details, die Sie benötigen.

+1

als Alternative kann man diese auch aus dem Bereich 'Environment' oder über' @ConfigurationProperties' erhalten – sodik

+1

Um dies hinzuzufügen, ist dies die Antwort von @ sodik ein Beispiel, das zeigt, wie die [Umgebung] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/Environment.html) http: // stackoverflow abgerufen wird. com/questions/28392231/how-to-bestimmen-programmatically-the-current-active-profile-using-spring-boot – cristi

+0

Was ist, wenn Sie auf mehr als 10 Werte zugreifen müssen, müssen Sie wiederholt Ihr Beispiel 10mal? – Jesse

88

Eine weitere Möglichkeit besteht darin, Environment in Ihre Bean zu injizieren.

@Autowired 
private Environment env; 
.... 

public void method() { 
    ..... 
    String path = env.getProperty("userBucket.path"); 
    ..... 
} 
+0

das ist wirklich nützlich, wenn Sie auf mehrere vars zugreifen müssen. Guter Rat – sarbuLopex

+0

auch nützlich, wenn der Name der Eigenschaft, auf die Sie zugreifen müssen, sich dynamisch ändert –

+1

Dies sollte die akzeptierte Antwort gewesen sein! – Spark

2

@ConfigurationProperties kann verwendet werden, um Werte zur Karte von .properties (.yml ebenfalls unterstützt) zu einer Modellklasse.

Betrachten Sie die folgende Beispieldatei.

.properties

cust.data.employee.name=Sachin 
cust.data.employee.dept=Cricket 

Employee.java

import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.context.annotation.Configuration; 

@ConfigurationProperties(prefix = "cust.data.employee") 
@Configuration("employeeProperties") 
public class Employee { 

    private String name; 
    private String dept; 

    //Getters and Setters go here 
} 

Nun kann die Eigenschaften Wert von employeeProperties autowiring zugegriffen werden wie folgt.

@Autowired 
private Employee employeeProperties; 

public void method() { 

    String employeeName = employeeProperties.getName(); 
    String employeeDept = employeeProperties.getDept(); 

} 
0

ich würde die folgende Art und Weise vorschlagen:

@PropertySource(ignoreResourceNotFound = true, value = "classpath:otherprops.properties") 
@Controller 
public class ClassA { 
    @Value("${myName}") 
    String name; 

    @RequestMapping(value = "/xyz") 
    @ResponseBody 
    public void getName(){ 
     System.out.println(name); 
    } 
} 

Hier wird Ihre neue Eigenschaften Dateiname „otherprops.properties“ ist und der Eigenschaftsname ist „myName“. Dies ist die einfachste Implementierung für den Zugriff auf die Eigenschaftendatei in der Spring Boot Version 1.5.8