网站忘了怎么办,泉州企业建站模板,网站商城微信支付,wordpress修改菜单Value 用于注入.properties文件中定义的内容 Autowired 用于装配bean 用法都很简单#xff0c;很直接#xff0c;但是稍不注意就会出错。下面就来说说我遇到的问题。 前两天在项目中遇到了一个问题#xff0c;大致描述就是我写了如下一个类#xff08;只列出关键代码#…Value 用于注入.properties文件中定义的内容 Autowired 用于装配bean 用法都很简单很直接但是稍不注意就会出错。下面就来说说我遇到的问题。 前两天在项目中遇到了一个问题大致描述就是我写了如下一个类只列出关键代码 Component
PropertySource(classpath:/config/config.properties)
public class MqttServiceClient implements IMqttServiceClient{Value(${mqtt_host})private String host;Value(${mqtt_client})private String client;private MqttClient mqttClient;public MqttService(){ mqttClient new MqttClient(host,client, new MemoryPersistence()); } } 并在其它类中定义了MqttServiceClient 类型的成员变量mqttServiceClient 并用Autowired注解进行注入如下 public class A{Autowiredprivate MqttServiceClient mqttServiceClient ; ...
} 然后运行时发现host和client总是为null就是没有注入。但是各个配置都是对的在项目中的其它类用同样的方法使用Value注解时就能够取到值。 提示的报错信息是MqttServiceClient 这个bean不能正确的创建。 一开始我以为是因为Value注解没有正确取值导致MqttServiceClient 类的构造函数不能正常运行从而导致的错误所以没在意提示的错误。 后来才发现我所有的用法都没错错就错在我重写的构造函数上 因为Java类会先执行构造方法然后再给注解了Value的成员变量注入值Autowired也一样所以在执行构造方法的时候就会报错。 我的解决办法是把Value注解的属性写入一个AppConfig类中然后在MqttServiceClient 中注入AppConfig类的对象并用构造器注入这样可以明确成员变量的加载顺序。 如下 public class MqttServiceClient implements IMqttServiceClient{private AppConfig appConfig;private MqttClient mqttClient;Autowiredpublic MqttServiceClient(AppConfig appConfig){this.appConfig appConfig;mqttClient new MqttClient (appConfig.getHost(), appconfig.getClient, new MemoryPersistence() } } 转载于:https://www.cnblogs.com/DjangoBlogs/p/9213069.html