มีหลายวิธีที่จะบรรลุเช่นเดียวกัน ด้านล่างนี้เป็นวิธีที่ใช้กันทั่วไปในฤดูใบไม้ผลิ -
การใช้ PropertyPlaceholderConfigurer
ใช้ PropertySource
การใช้ ResourceBundleMessageSource
การใช้ PropertiesFactoryBean
และอื่น ๆ อีกมากมาย........................
สมมติว่าds.type
เป็นกุญแจสำคัญในไฟล์คุณสมบัติของคุณ
การใช้ PropertyPlaceholderConfigurer
ลงทะเบียนPropertyPlaceholderConfigurer
bean-
<context:property-placeholder location="classpath:path/filename.properties"/>
หรือ
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:path/filename.properties" ></property>
</bean>
หรือ
@Configuration
public class SampleConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
หลังจากลงทะเบียนPropertySourcesPlaceholderConfigurer
คุณสามารถเข้าถึงมูลค่า -
@Value("${ds.type}")private String attr;
การใช้ PropertySource
ในเวอร์ชั่นฤดูใบไม้ผลิล่าสุดที่คุณไม่จำเป็นต้องลงทะเบียนPropertyPlaceHolderConfigurer
กับ@PropertySource
ผมพบว่าดีลิงค์ที่จะเข้าใจรุ่น compatibility-
@PropertySource("classpath:path/filename.properties")
@Component
public class BeanTester {
@Autowired Environment environment;
public void execute() {
String attr = this.environment.getProperty("ds.type");
}
}
การใช้ ResourceBundleMessageSource
ลงทะเบียน Bean-
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:path/filename.properties</value>
</list>
</property>
</bean>
เข้าถึงมูลค่า -
((ApplicationContext)context).getMessage("ds.type", null, null);
หรือ
@Component
public class BeanTester {
@Autowired MessageSource messageSource;
public void execute() {
String attr = this.messageSource.getMessage("ds.type", null, null);
}
}
การใช้ PropertiesFactoryBean
ลงทะเบียน Bean-
<bean id="properties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:path/filename.properties</value>
</list>
</property>
</bean>
Wire Properties อินสแตนซ์ในคลาสของคุณ -
@Component
public class BeanTester {
@Autowired Properties properties;
public void execute() {
String attr = properties.getProperty("ds.type");
}
}