spring 不允许/不支持把值注入到静态变量中,如:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class GlobalValue {
@Value("${mongodb.db}")
public static String DATABASE;
}
如果你获取GlobalValue.DATABASE,会得到null
GlobalValue.DATABASE = null
那我们如何解决这个问题呢。
好在spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量。如:
[java] view plain copy 在CODE上查看代码片派生到我的代码片
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class GlobalValue {
public static String DATABASE;
@Value("${mongodb.db}")
public void setDatabase(String db) {
DATABASE = db;
}
}
注意:set方法中是没有static关键字的
输出:
GlobalValue.DATABASE = "mongodb database name"
原文:http://www.mkyong.com/spring/spring-inject-a-value-into-static-variables/
分享到:
相关推荐
通过上述分析和示例,我们可以看到,在Spring框架中,虽然不能直接使用`@Value`注解为静态变量注入值,但可以通过定义一个非静态方法并使用`@Value`注解来间接实现这一目标。这种方法不仅避免了潜在的警告和错误,还...
现在,当Spring Boot应用启动时,它会自动加载`yml`配置文件,并调用`ClickHouseUtil`类中带有`@Value`注解的setter方法,将配置文件中的值赋给相应的静态变量。这样,我们的静态方法(如`getConn()`)就可以使用...
Spring Boot 静态变量注入配置文件详解 Spring Boot 框架中,静态变量注入配置文件是一个常见的问题。本文将详细介绍 Spring Boot 静态变量注入配置文件的相关知识点,包括静态变量的概念、静态变量的注入方式、...
Spring Boot工具类静态属性注入是指使用Spring Boot框架时,如何将配置信息注入到工具类的静态变量中,以便在程序中使用这些配置信息。这种方式可以方便地在不同的环境中切换配置信息,例如在开发环境中使用本地的...
然而,Spring并不支持直接注入静态变量,这主要是由于静态变量的特性与依赖注入的设计原则相冲突。 首先,让我们了解一下为什么Spring依赖注入通常不适用于静态变量。静态变量属于类级别,而不是对象级别,这意味着...
本篇文章主要介绍了spring 如何将配置信息注入静态变量的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
"一个改进版的spring-mvc-showcase"是一个项目示例,它基于Spring MVC框架进行了一些优化和增强。Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序。它提供了一个灵活的模型-视图-控制器(MVC)架构,...
3. **模型数据注入**:在 Spring 控制器中,可以通过 `Model` 或 `ModelAndView` 将数据传入视图,Thymeleaf 在渲染时会自动查找并替换对应的变量。 4. **模板缓存**:Thymeleaf 支持模板缓存,提高页面渲染速度,...
在 Spring Boot 框架中,我们经常需要将配置文件中的值注入到静态变量中,但是默认情况下,Spring Boot 不支持将值注入到静态变量中。这是因为静态变量是属于类的,而不是实例的,而 Spring Boot 的注入机制是基于...
变量定义 编译插件 Spring项目的搭建 Spring Tool Suite https://spring.io/tools/sts/all IntelliJ IDEA NetBeans https://netbeans.org/downloads/ Spring基础配置 依赖...
5. **MVC增强**:包括路径变量、静态资源处理、RESTful支持等方面的改进,提高了Spring MVC的易用性和功能。 6. **JMX改进**:加强了JMX集成,提供了更好的监控和管理能力。 7. **Caching**:引入了缓存抽象,支持...
6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...
3. **Spring Beans可视化编辑器**:STS提供了一个图形化的Bean定义编辑器,使开发者能够直观地查看和编辑bean的配置,包括属性、依赖注入和生命周期方法等。 4. **Spring Profile支持**:在STS中,你可以方便地切换...
然而,静态方法和静态变量不参与Spring的生命周期管理,因此,尝试在静态字段或静态方法中直接使用`@Autowired`注入Bean会导致空指针异常,因为Spring容器不会初始化静态成员。 **解决方法1:使用@Component和非...
解决办法是使用spring的set注入方法来将非静态变量注入静态变量。下面是一个示例代码: ```java @PropertySource(value = {"classpath:config/application.yml"}, ignoreResourceNotFound = true, encoding="UTF-8...
通过设置断点,查看变量状态,跟踪方法调用,可以深入理解Spring MVC如何处理请求、如何进行依赖注入以及如何与视图交互。这种能力对于优化性能、定位问题和扩展功能至关重要。 总之,Spring MVC的源码调试涉及到对...
为了通过 Spring 给 DeptService 的 deptDAO 属性注入值,需要在 applicationContext.xml 文件中添加以下代码: A. <constructor-arg> <ref bean="dao"/> </constructor-arg> 这将通过构造方法来注入 DeptDAO 对象...
`T()`用于引入静态类型,`#`字符后的`root`变量可以访问bean。例如,`#{root.name}`可以获取当前上下文中的bean的name属性。 在4.3.6.RELEASE版本中,SpEL增加了对Java 8新特性的支持,包括日期时间API(java.time...
例如,我们可以在`@PostConstruct`方法或者`run`方法中获取bean并赋值给静态变量。 ```java @Component public class InitializationBean { @Autowired private MyBean myBean; @PostConstruct public ...