applicationcontext 相关问题

Spring`ApplicationContext`类

Bean 定义未从 Spring applicationContext.xml 文件加载

我有一些SQL查询以Map的形式存储在applicationContext.xml文件中 我有一些 SQL 查询以 Map 的形式存储在 applicationContext.xml 文件中 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <util:map id="queries" key-type="java.lang.String" value-type="java.lang.String"> <description>Map contain SQL queries to handle ETL Framework database operations</description> <entry key="getJobById" value="SELECT * FROM etl_jobs WHERE job_id = ?"/> <entry key="getJobsByName" value="SELECT * FROM etl_jobs WHERE job_name LIKE ?"/> ... </util:map> 在我的 Java 代码中,我有以下内容: @Repository @ImportResource("classpath:applicationContext.xml") public class EtlDataRepository { private static final Logger LOG = LoggerFactory.getLogger(EtlDataRepository.class.getName()); @Autowired private JdbcTemplate jdbc; private Map<String, String> queries; ... } 我也为这个类提供了 setter 和 getter。 但是,当应用程序启动时,查询 bean 并未加载,即它为 null。 几年前我写了非常相似的代码,并且运行得很好。 Spring-boot 从 v.2.3 到 v.3.2 发生了哪些变化导致它无法工作以及如何修复它? 将@ImportResource移至顶部,即@SpringBootApplication没有改变任何东西。将 @Autowired 添加到 Map 查询会导致以下错误: **************************** 应用程序无法启动 描述: com.visa.vms.etl.daemon.dao.EtlDataRepository 中的字段查询 需要一个类型为“java.util.Map”的 bean,但无法找到。 注入点有以下注释: @org.springframework.beans.factory.annotation.Autowired(必需= true) bean 在 applicationContext.xml 文件中定义。看起来这个上下文没有被导入。 在 SpringBoot v.2.3 的旧应用程序中使用了完全相同的代码(具有不同的地图内容),并且无需自动装配即可工作。 通过@Qualifier("queries"),我能够“连接”所描述的(xml+)地图......就像这样: package com.example.demo; import java.util.Map; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ImportResource; @SpringBootApplication @ImportResource("classpath:applicationContext.xml") public class Demo { public static void main(String[] args) { SpringApplication.run(Demo.class, args); } @Bean InitializingBean hello(/*@Autowired*/ @Qualifier("queries") Map<String, String> queries) { return () -> System.err.println(queries); } } ...没有强有力的论据,为什么它不应该在任何 Bean/Repository/Service 中工作。 不过,我无法这么快地重现错误:省略限定符至少会填充(以某种方式在默认快速入门中)一个空地图。 要重现“应用程序启动失败”,我们可以使用: @Bean InitializingBean hello2(Map x) { return () -> System.err.println(x); } ,其中也不是: (参数)名称符合条件 (或)声明泛型类型参数。 它为我们提供了(在 spring-boot 快速入门中): ... *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of method hello2 in com.example.demo.Demo required a single bean, but 5 were found: - queries: defined in unknown location - systemProperties: a programmatically registered singleton - systemEnvironment: a programmatically registered singleton - contextParameters: a programmatically registered singleton - contextAttributes: a programmatically registered singleton @价值替代品 这也是可能的: //..somewhere in a spring bean (aware of applicationContext.xml)... @Value("#{queries}") Map<String, String> queries; ... (org.springframework...)@Value + SpEL 表示“‘查询’ bean”+ 匹配字段/参数。

回答 1 投票 0

如何为应用程序上下文初始化事件添加钩子?

对于常规 Servlet,我想您可以声明一个上下文侦听器,但是对于 Spring MVC,Spring 会让这变得更容易吗? 此外,如果我定义了一个上下文侦听器,然后需要访问...

回答 6 投票 0

此代码如何解决“资源泄漏:'context'从未关闭”警告?

我是 Spring 框架的新手,在执行下面的代码时,我收到警告“资源泄漏:‘上下文’从未关闭” 包 com.programmingtechie.examples; 导入 org.springframework.beans.

回答 2 投票 0

JUnit Spring Boot Appliction 中的“无法为 WebMergedContextConfiguration 加载 ApplicationContext”错误

部门控制器测试是部门控制器类的文本类。但是,出于某种原因,它会抛出错误:“无法为 WebMergedContextConfiguration&

回答 0 投票 0

Java 密钥库 bean 使 HTTPS 地址不可访问

我正在尝试将应用程序从 WebSphere (8.5) 迁移到 WildFly (20)。我已经使用应用程序上下文来配置 Web 服务模板。我在其中使用了密钥库 bean。当我部署

回答 0 投票 0

Java 上下文密钥库 Bean 使无法访问的 HTTPS 地址

我正在尝试将应用程序从 webphere (8.5) 移动到 wildfly (20)。我已经使用应用程序上下文来配置 Web 服务模板。我在其中使用了密钥库 bean。当我部署

回答 0 投票 0

基于XML上下文的Bean不能执行构造函数注入:没有找到默认构造函数。

我正在学习Spring框架(没有SpringBoot,为了了解它的工作原理)。我在applicationContext.xml文件中定义了这个bean。

回答 1 投票 0

基于XML上下文的Bean不能执行构造函数注入:没有找到默认构造函数。

我正在学习Spring框架(不使用Spring Boot,以便了解它的工作原理)。我在applicationContext.xml文件中定义了这个bean。

回答 1 投票 0

来自Spring应用上下文的Servlet上下文属性

我正试图摆脱非常老的servlet,并在它们的位置上添加休闲服务。这是否有可能从应用程序上下文中获取与我之前从servlet中获取相同的数据......

回答 1 投票 0

在Spring3中注入applicationContext的最佳实践。

就像上面的标题一样,我对直接通过@Autowired annnotation注入applicationContext和在单例spring bean中实现ApplicationContextAware接口之间的利弊感到困惑。

回答 5 投票 9

Spring找不到bean xml配置文件:“无法从相对位置导入bean定义”

我在Eclipse中的资源文件夹(src / main / resources)包含-beans.xml和-person.xml在beans.xml中,我使用

回答 1 投票 0

如何避免在SpringResourceTemplateResolver上调用setApplicationContext?

我目前正在与Thymeleaf一起建立Spring MVC项目,请按照以下教程中的说明进行操作:http://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html#spring-mvc-configuration尝试对进行亲吻。 ..

回答 1 投票 2

为什么从ApplicationContext检索的bean中@Autowire为空?

我研究了有关Spring autowire问题的许多其他StackOverflow帖子。这个问题并不像“不要期望@Autowire在新对象上工作”那么简单。我有一个构造...

回答 1 投票 0

Spring上下文层次结构:如何同时初始化子上下文

我使用Spring Boot Fluent Builder API来构建Spring上下文层次结构,如此处所述。是否可以同时初始化子上下文?

回答 1 投票 0

使Spring引导应用程序更快启动

spring-boot中有两个IOC容器:BeanFactory和ApplicationContext。据我了解,ApplicationContext支持在BeanFactory进行的情况下对Bean进行急切的初始化...

回答 2 投票 0

Spring batch ApplicationContext

我在我的项目中使用Spring Batch应用程序。一旦启动spring batch main方法,在main方法的末尾,我就用来关闭classpathxmlapplicationcontext。是否有必要...

回答 1 投票 0

如何注入ApplicationContext本身

我想将ApplicationContext本身注入到bean中。类似于public void setApplicationContext(ApplicationContect context){this.context = context; }春天有可能吗?

回答 4 投票 61

AbstractApplicationContext(Spring)下的refresh()方法有什么用?为什么在使用refresh()之后丢失bean单例作用域?

已使用以下代码检查AbstractApplicationContext下的refresh()方法的工作情况。但是发现由于刷新而使bean的单例作用域丢失了。 ...

回答 1 投票 0

ApplicationContext.getAppContext()。getBean(“ jBeanName”)在Junit测试中返回null

我确实有一个用@Configuration @ConfigurationProperties(“ sample”)注释的简单类,@Configuration公共类Sample {private String username;私有字符串密码; ...

回答 1 投票 0

如何销毁现有的bean并用新的定义Spring替换-在运行时

我有一个网络应用程序。在我的Web应用程序中,我从另外2个jar文件中导入了“ applicationContext.xml”。在两个导入的上下文文件中,很少有普通bean。在我的其中一个...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.