2015-05-29 13 views

cevap

144

Sen @Value ek açıklama kullanmak ve

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

Bahar Önyükleme dokümanlar Externalized Configuration bölüm kullandığınız hangisi Bahar fasulye tesise erişebilir, ihtiyacınız olabilecek tüm ayrıntıları açıklar.

+1

'daki özellik dosyasına erişmek için en basit olanıdır. En alternatif olanı, aynı zamanda "ortam" yayından da alabilir veya @ @ ConfigurationProperties' – sodik

+1

@ sodik'in yanıtının üstüne eklemek için budur. [Ortam] 'ın nasıl alınacağını gösteren bir örnek (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/env/Environment.html) http: // stackoverflow. com/questions/28392231/nasıl-nasıl-programlı-geçerli-aktif-profil-kullanarak-bahar-önyükleme – cristi

+0

10'dan fazla değere erişmeniz gerekiyorsa, örnek 10 kez tekrarlamak zorunda kaldınız mı? – Jesse

88

Fasulyenize başka bir yol da Çevre enjekte etmektir.

@Autowired 
private Environment env; 
.... 

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

çok vars erişmek zorunda olduğunuzda gerçekten yararlıdır. – sarbuLopex

+0

İyi tavsiyeler, erişmeniz gereken mülkün adının dinamik olarak değiştiğinde de yararlıdır –

+1

Bu, kabul edilen cevap olmalıydı! – Spark

2

@ConfigurationProperties model sınıfına .properties (de desteklenir .yml) değerleri eşlemek için kullanılabilir. Aşağıdaki Örnek dosyasını inceleyin.

.properties

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

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 
} 

Employee.java Şimdi özellikleri değeri aşağıdaki gibidir employeeProperties Autowiring erişilebilir. İşte yeni özellikler ismi "otherprops.properties" ve özellik adı "myName" olduğunu file

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

:

@Autowired 
private Employee employeeProperties; 

public void method() { 

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

} 
0

i aşağıdaki şekilde öneririm. Bu özellik, ilkbahar/bahar sürümü 1.5.8

İlgili konular