@Configuration
@ComponentScan("com.app")
@PropertySource("classpath:application.properties")
public class AppConfig {
// it will help to pull the properties incorporated in the file you have provided in the @PropertySource annotation
private Environment environment;
//inject it
public AppConfig(Environment environment) {
this.environment = environment;
}
// build your beans - the getProperty method accepts the key from application.properties
// file and return a value as a String. You can provide additional arguments to convert
//the value and a default value if the property is not found
@Bean
public Product product() {
return new Product(
environment.getProperty("product.name", "XXX"),
environment.getProperty("product.price", BigDecimal.class, BigDecimal.ZERO),
environment.getProperty("product.quantity", Integer.class, 10)
);
}
}
1条答案
按热度按时间dwbf0jvd1#
是的,在Spring有一种方法可以做到这一点。SpringBoot毕竟是一个增强的、自动配置的spring(还有其他很酷的特性)。这意味着springboot中的所有内容在spring中也应该是可以实现的,但是您必须自己做一些/很多额外的工作。
直截了当地说,为了实现你想要的,你需要采取以下步骤:
创建一个类,它将存储所有配置(基本上是存储在xml文件中的属性)——我们称之为appconfig.class
用@configuration注解appconfig.class-这将通知spring这个类是配置的源;
用@componentscan(“com.app”)注解appconfig.class——这里,您需要提供一个包,spring必须从中开始组件扫描,以便找到要在spring容器中注册的bean。重要的是,它将扫描包及其子包,因此您主要希望在这里提供顶级包;
如果需要将一些数据注入到bean中,则需要使用@propertysource(“classpath:application.properties“”-我在这里提供了默认值,spring boot在内部使用该值,以防您希望在运行时将一些数据注入bean。为此,需要将environment.class注入appconfig.class
在示例中显示:
我希望这会有帮助