桓台网站,近期即将上市的手机,浙江住房与城乡建设厅官方网站查询,查公司法人信息怎么查对于spring static变量
下面给大家介绍spring不能注入static变量的原因#xff0c;具体详情如下所示#xff1a;
Spring 依赖注入 是依赖 set方法
set方法是 是普通的对象方法
static变量是类的属性
只能在setAppId方法上加注解#xff0c;另外class需要加 Component等…对于spring static变量
下面给大家介绍spring不能注入static变量的原因具体详情如下所示
Spring 依赖注入 是依赖 set方法
set方法是 是普通的对象方法
static变量是类的属性
只能在setAppId方法上加注解另外class需要加 Component等注解这样spring才能扫描到
对于
import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;Componentpublicclass GlobalValue {Value(${mysqk.db})public static String DATABASE;}DATABASE的值是null
但是静态的XXX如何注入呢
上网查了很多的说法其实很简单
import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import lombok.Getter;Componentpublicclass GlobalValue {Getterpublic static String DATABASE;Value(${mysql.db:test})public void setDatabase(String db) {DATABASE db;}}DATABASE可以获取到值
这里要特别注意自动生成的getter和setter方法会带有static的限定符需要去掉才可以。 方式二 通过InitializingBean
import lombok.Getter;import lombok.Setter;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;/*** 通用配置 **/Configurationpublicclass TestConfig implements InitializingBean {/*** 数据拼接时数据分隔符默认;*/Value(${data.separator.flag:})private String separatorCon;/*** 数据拼接时数据分隔符默认;*/GetterSetterprivate static String separator;Overridepublic void afterPropertiesSet() throws Exception {separator separatorCon;}}方式三 定义后通过注入bean Autowiredprivate TestConfig config;然后通过bean获取 方式四
PostConstruct方式实现
import org.mongodb.morphia.AdvancedDatastore;import org.springframework.beans.factory.annotation.Autowired;Componentpublicclass MongoFileOperationUtil {Autowiredprivate static AdvancedDatastore dsForRW;private static MongoFileOperationUtil mongoFileOperationUtil;PostConstructpublic void init() {mongoFileOperationUtil this;mongoFileOperationUtil.dsForRW this.dsForRW;}}PostConstruct 注解的方法在加载类的构造函数之后执行也就是在加载了构造函数之后执行init方法(PreDestroy 注解定义容器销毁之前的所做的操作) 这种方式和在xml中配置 init-method和 destory-method方法差不多定义spring 容器在初始化bean 和容器销毁之前的所做的操作 方式五 set方法上添加Autowired注解类定义上添加Component注解
import org.mongodb.morphia.AdvancedDatastore;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;Componentpublicclass MongoFileOperationUtil {private static AdvancedDatastore dsForRW;Autowiredpublic void setDatastore(AdvancedDatastore dsForRW) {MongoFileOperationUtil.dsForRW dsForRW;}}首先Spring要能扫描到AdvancedDatastore的bean然后通过setter方法注入
然后注意成员变量上不需要再添加Autowired注解
转载至https://blog.csdn.net/ZYC88888/article/details/87863038