我的Maven项目有三个模块,web
,service
,common
我项目的某些部分是这样的:
demo-parent:
--web
--src
--main
--java
--Application.java
--resources
--application.properties
--application-mysql.properties
--service
--common
--src
--main
--java
--ErrorCode.java
--resources
--application-errors.properties
在网络模块中Application.java
,我想从common
模块中读取内容application-errors.properties
。
这是我ErrorCode.java
的位置common
:
@Configuration
@EnableAutoConfiguration
@EnableConfigurationProperties
@ConfigurationProperties(locations = "classpath:application-errors.properties")
public class ErrorCode {
private int code;
private String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
因为我想application-errors.properties
从web
模块中使用它,所以在模块web
中Application.java
:
@SpringBootApplication
@PropertySources({
@PropertySource("application-mysql.properties"),
@PropertySource("application-errors.properties")
})
@EnableConfigurationProperties({ErrorCode.class})
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Application.class);
application.run(args);
}
}
现在,我添加EnableConfigurationProperties
到Application.java
其中包含main
方法,并且可以从application-errors.properties
文件中获取键和值,我的问题是:
如果我想在其他模块(如service)中调用appliction-errors.propertie ,而service没有main方法,该怎么办?
我们可以使用javaProperties
类读取属性文件,但是我想使用spring方法。
欢迎任何建议,谢谢。
除了访问application-error.properties外,还可以ErrorCode
在其他模块中的服务中自动建立类的连接(假设ErrorCode位于这些服务的构建类路径中)。
首先定义您的错误消息配置组件。
@Configuration
@ConfigurationProperties(locations = "classpath:application-error.properties")
public class ErrorCode {
private int code;
private String message;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
自动将配置组件投入使用
@Component
public class Service {
@Autowired
private ErrorCode errorCode;
public void accessErrorCode() {
System.out.println(errorCode.getCode()); //Print code property
System.out.println(errorCode.getMessage()); //print message property
}
}
在Spring应用程序中启用自动配置
@SpringBootApplication
@EnableAutoConfiguration
@EnableConfigurationProperties
public class Application {
public static void main(String[] args) {
SpringApplication application = new SpringApplicationBuilder(Application.class).web(false).application();
ConfigurableApplicationContext context = application.run(args);
Service s = context.getBean(Service.class);
s.accessErrorCode();
}
}
根据的Javadocs EnableConfigurationProperties
,
{@link ConfigurationProperties} bean可以以标准方式注册(例如*使用{@link Bean @Bean}方法),或者为方便起见,可以直接在此批注上指定*。
因此,所有带有注释定义的beanConfigurationProperties
都将在应用程序上下文下检测到,并可以自动连接到其他服务中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句