问题标签 [spring-autoconfiguration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
17380 浏览

java - Spring Boot 2.0.0,在自动配置 jar 中找不到 DataSourceBuilder

我们正在升级我们现有的Spring Boot (1.5)应用程序升级到2.0.0.

我们连接多个数据库并使用org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder该类。

我添加了依赖项:

但是,我无法编译该项目:此类(DataSourceBuilder 2.0.0 版本的 jar 中不存在此类 ( )。

为了排除 gradle 问题,我手动下载了 jar 并将其添加到classpath. 版本中不存在此类。

还提取并搜索了 jar,但缺少此类。谁能帮我解决它?

0 投票
1 回答
384 浏览

java - Spring Boot 自定义 Bean 加载器

我将 JDBI 与 Spring Boot 结合使用。我按照本指南创建了一个类:JdbiConfig在其中,对于应用程序上下文中需要的每个 dao,您必须添加:

我想知道 Spring Boot 中是否有某种方法可以创建自定义处理器来创建 bean 并将它们放入应用程序上下文中。我对这如何工作有两个想法:

  1. 使用自定义注解对 DAO 进行注解@JdbiDao并编写一些内容来获取它们。我曾尝试手动将这些注入到应用程序启动中,但问题是它们可能无法及时加载以注入,因为它们在类扫描期间无法识别。
  2. 创建一个JdbiDao每个存储库接口都可以扩展的类。然后用标准注释接口@Repository并创建一个自定义处理器以通过以下方式加载它们Jdbi#onDemand

这是我的两个想法,但我不知道有什么方法可以实现。我坚持手动创建一个bean?这个问题以前解决过吗?

0 投票
2 回答
1918 浏览

java - 使用 @ComponentScan 进行元注释的 Spring 自定义 @Enable 注释

我正在尝试为 Spring 框架编写自己的@Enable注释,应按如下方式使用:

我使用自定义注释跟随组件扫描,但这带来了一些限制:

  1. 我无法使基础包属性动态化,即无法通过"com.example.package.base",但需要在配置时预先定义包。

    我看了看@AliasFor,但无法让它工作。

  2. 当我省略基本包时,扫描从注释的定义包开始,而不是从注释类的包开始。在上面的示例中,它只会为 中的类扫描和创建 bean com.example.annotations,而不会为com.example.package.*.

    我查看EntityScanPackages.Registrar.class了注解中导入了哪个@EntityScan,但它是一个内部类,我的注解无法导入。

如果我上课,一切正常@ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, value = MyAnnotation.class))MyApplication但当它移动到@EnableCustom. 如何告诉 Spring Framework 将其视为使用某些默认值@EnableCustom指定的不同方式。@ComponentScan我尝试使用 和其他人对我的注释进行元注释@Configuration@Component但无济于事:

我在哪里可以找到这方面的文档或您会推荐什么起点?我的长期目标是拥有一个可供众多项目使用的 Spring Boot 启动器。


AM(N)WE 可以在以下存储库中找到:https ://github.com/knittl/stackoverflow/tree/spring-enable-annotation

以下是包结构的概要:

0 投票
1 回答
392 浏览

spring - 自动配置 RestController Spring Boot

我试图找到有关如何手动配置 RestController(即在 Configuation 类中)的文档。这意味着不使用 RestController 注释。考虑所有其他注释,如映射、路径变量等,是否完全有可能?

0 投票
1 回答
337 浏览

java - Spring自动创建数据库后如何运行DDL?

我的问题很简单。在 Spring 的自动模式创建之后如何运行任何 DDL 语句?

我在 application-test.properties 中设置了以下内容,以从实体 Java 类自动创建数据库模式。

自动创建架构后,我想更改一张表中一列的数据类型。

我尝试在类路径中有一个 schema.sql 文件,但这没有帮助。

请提供任何帮助。

0 投票
1 回答
162 浏览

java - Spring Boot 2下activiti后启动liquibase

我们有一个带有 activiti 和 liquibase 依赖项的项目。Activiti 是自动配置的(exc. 'spring.activiti.async-executor-activate' 和 application.yml 中的 'spring.activiti.database-schema-update' 参数)和 liquibase 也是(exc. 'spring.liquibase.change-log ')。

现在我们需要使用特殊的 liquibase 变更集(如<sql>alter index ... rebuild tablespace ...</sql>.

现有数据库没有问题,但由于 liquibase 试图更改不存在的 ACT_* 索引,它在第一个应用程序开始安装 DB 时崩溃。

考虑到 Spring Boot 自动配置,我如何在安装 activiti DB 后启动 liquibase?

0 投票
1 回答
79 浏览

spring - BeanPostProcessor 无法处理 bean RedisProperties

我使用的 spring boot 版本是 2.1.5.RELEASE。我的项目使用redis。为了安全,我加密了我的redis密码。我在我的application.properties中设置了如下值:</p>

spring.redis.password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

我想在spring bean的init之前解密,所以我想改变RedisProperties的passowrd属性的值。所以我自定义一个BeanPostProcesser是这样的:

但这不起作用,当我运行我的应用程序时,没有像这样打印的日志:

beanName = redisProperties

为了确保我的 bean 中有一个命名的 bean redisPropertiesapplicationContext我将 bean 注入RedisProperties另一个 Bean。它运行良好,我可以在RedisProperties.

为了使我的应用程序使用加密密码成功运行,我用另一个方法解密了redis的密码。@PostConstruct但我认为这种方式并不优雅,正确的方法是什么?

谁能帮帮我,拜托

0 投票
2 回答
1714 浏览

java - NoSuchBeanDefinitionException:当我使用自动配置时,没有名为“elasticsearchTemplate”的 bean 可用

我想使用 ElasticSearch 和 Spring Data。我添加了这个依赖项:

我想使用自动配置。我遵循这个文档:https ://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-connecting-to-elasticsearch-rest

我创建了存储库:

我添加了这个,但它现在可以工作了!

启动我的应用程序后出现错误:

但是为什么会这样呢?我想使用自动配置,我不想手动描述 bean,正如在对 stackoverflow 的其他响应中所说的那样!

我使用 Spring boot 2.3.1.RELEASE 和 Java 11

编辑

我的配置:

我的应用程序:

0 投票
1 回答
1304 浏览

spring-boot - SpringBoot 在运行 Junit 测试时禁用 DataSourceAutoconfigure 错误

我的 Springboot 应用程序工作正常,它连接到数据源。对于 Junit,我通过排除 DatasourceAutoConfiguration、DataSourceTransactionManagerConfiguration、HibernateJpaAutoConfiguration 类来禁用数据源的自动配置,以避免 SpringBoot 自动配置数据源。

pom.xml

主班

JuniTestClass

}

在 mvn 测试中,测试脚本运行但失败,因为 Springboot 没有自动配置 SampleRepository bean(可能是因为排除了 Datasource 和 HibernateJpa 自动配置类)

错误

如果我删除 AutoConfig Exclusion,Junit 测试在配置数据源的本地工作区中工作正常(尽管不应建立与 DB 的 JUnit 连接)。问题是我正在设置 devops 管道,并且在“Maven 测试”期间,SpringBoot 自动配置数据源并且到 Jenkins 到数据库的连接失败。

我想在 Junit - Maven 测试和实际 SpringBoot jar 构建期间禁用自动配置,应该启用自动配置。

有人可以让我知道如何使用注释来实现这一点吗?

0 投票
2 回答
1161 浏览

spring-boot - Spring自定义whitelabel错误 - 重定向

我正在尝试通过在使用 RestController 注释的类中实现错误控制器来自定义 /error。

Spring Boot 应用程序包含自动配置库,并且没有显式设置或使用 MVC。

当错误状态为 401 和 404 时,上面的代码可以正常工作。

这是设置位置以响应重定向 url 但不重定向。

要求是将 /error 映射到外部 UI 页面。

现在,当我使用redirectview 或responsentity 时,处理程序中的逻辑仅在手动调用/error 并且404 不调用/error 时才有效。它只是说找不到此页面。有人可以告诉我这是因为自动配置库还是我遗漏了什么?