2015-05-29 15 views

Odpowiedz

144

Można użyć @Value adnotacji i dostępu do właściwości w zależności od tego Wiosna fasoli używasz

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

sekcji Externalized Configuration Wiosna docs Boot, wyjaśnia wszystkie szczegóły, które mogą być potrzebne.

+1

jako alternatywa można je uzyskać również ze źródła 'Środowisko' lub przez' @ KonfiguracjaProperties' – sodik

+1

Aby dodać na górze odpowiedzi @ sodik, jest to przykład, który pokazuje, jak uzyskać [Środowisko] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/Environment.html) http: // stackoverflow. com/questions/28392231/how-to-specify-program-current-active-profile-using-spring-boot – cristi

+0

Co, jeśli potrzebujesz dostępu do ponad 10 wartości, Czy musiałbyś powtarzać swój przykład 10 razy? – Jesse

88

Innym sposobem jest wstrzyknięcie środowiska do Twojej fasoli.

@Autowired 
private Environment env; 
.... 

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

to bardzo przydatne, gdy trzeba uzyskać dostęp do wielu zmiennych. Dobra rada – sarbuLopex

+0

jest również przydatna, gdy nazwa nieruchomości, do której chcesz uzyskać dostęp, zmienia się dynamicznie –

+1

To powinna być zaakceptowana odpowiedź! – Spark

2

@ConfigurationProperties mogą być używane do mapowania wartości od .properties (.yml również obsługiwane) do klasy modelu.

Rozpatrz następujący przykładowy plik.

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

Teraz wartość właściwości można uzyskać przez autowiring employeeProperties następująco.

@Autowired 
private Employee employeeProperties; 

public void method() { 

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

} 
0

proponuję następujący sposób:

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

tutaj swoje nowe właściwości file name is "otherprops.properties" i nazwa nieruchomość jest "mojanazwa". To jest najprostsza implementacja, aby uzyskać dostęp do pliku właściwości w wiosennej wersji rozruchowej 1.5.8