问题标签 [spring-config]

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 回答
556 浏览

java - Spring 转换服务未正确初始化以进行测试

我正在使用 spring boot 1.5.9 编写一个小型的 rest 服务器。我刚刚开始使用初始化代码并陷入了这种奇怪的行为。

我有一个小测试-

最初,application.properties 被忽略了。在我添加 @SpringBootTest 注释后,application.properties 被读取,但开始出现以下错误。

引起:org.springframework.validation.BindException:org.springframework.boot.bind.RelaxedDataBinder$RelaxedBeanPropertyBindingResult:1 错误字段“端口”上的对象“mongo”中的字段错误:拒绝值 [${mongo.port:27017}] ; 代码 [typeMismatch.mongo.port,typeMismatch.port,typeMismatch.int,typeMismatch]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [mongo.port,port]; 论据 []; 默认消息[端口]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“port”所需的类型“int”;嵌套异常是 org.springframework.core.convert.ConverterNotFoundException:在 org.springframework.boot.bind 找不到能够从类型 [java.lang.String] 转换为类型 [int]] 的转换器。

我试过这个声明端口为 java.lang.Integer 以及 int。

配置 bean 看起来像这样 -

我确实使用@EnableAutoConfiguration 注释而不是@SpringBootTest 运行了测试。但这仅适用于其中一项测试。我认为您的测试在哪个包中很重要,而且我认为 @EnableAutoConfiguration 可能不是正确的方法。

我已经调试spring源有一段时间了,没有任何线索。

如果您有任何建议,请告诉我。

编辑 1:根据要求,添加 application.properties

0 投票
1 回答
471 浏览

java - 如何根据注解为@Autowire 字段提供不同的bean 实现?

我有一个配置类,它提供了相同基 bean 接口的两个实现。我希望根据字段上的注释有条件地在自动装配字段上设置这些。

这是配置类的伪代码:

如何使带注释的字段由第二个 bean 填充?

0 投票
2 回答
120 浏览

java - 二级类型依赖注入在 Spring Boot 中不起作用

根据文档,spring boot 将自动检查在使用 @Configuration 注释的任何类中创建的 bean 类对象,并将覆盖该类的默认 bean,并返回具有定义时注入的任何属性的对象。但是当我在 junit 中测试这个应用程序时,它不会返回任何被注入的值。我所有的类都定义在同一个包中我的代码如下,

//引擎类

//测试配置类

//Spring启动主应用

//JUnit测试类

请帮助我找到解决上述问题的方法。

0 投票
1 回答
714 浏览

java - Spring Boot中的原始类型依赖注入

您能否为我提供一个在 Spring Boot 中进行原始类型依赖注入的示例。我已经尝试过一次,但是我的自定义 bean 定义类 TestConfiguration 没有被 Spring Boot 应用程序检测或识别。这是我的代码,

//引擎类

//测试配置

//spring主应用

//JUnit 测试

请就上述问题提出任何解决方案

0 投票
2 回答
7270 浏览

spring-data - Spring Data Page 未正确将排序序列化为 JSON

此问题出现在 Spring-Data 版本 2 中。在最新版本 1.13.9(及更早版本)中,它运行良好。

控制器代码:

Spring-Data 2 风格相同:

配置:

还尝试了简单的 Spring 应用程序,没有 Spring Boot 和 Java 配置以及 XML 配置。结果是一样的:

如果我将 Spring-Data 版本更改为 1.X,我将得到正确的 JSON 响应来排序对象:

似乎我什么都试过了,我没有在更新日志中找到任何关于排序更改的通知,我在 Spring JIRA 中没有发现这样的问题。

所以问题是我如何使用 spring-data 2.X libs JSON 排序如下:

代替:

0 投票
2 回答
1991 浏览

hibernate - 引起:java.lang.IllegalStateException:EntityManagerFactory 不能为空

我之前使用的是 Spring Boot 1.4.2.RELEASE和 Hibernate 5.0.11.Final,这是我的数据库配置类:

这是application.yml

这是GenericRepository类:

这是pom.xml的依赖项部分:

然后,我将 Spring Boot 版本更改为1.5.9.RELEASE并将 Hibernate 版本更改为5.2.12.Final,然后当我运行应用程序时,出现此异常:

最后,当我DataBaseConfiguration在上述版本更改后检查类时,我看到它HibernateJpaSessionFactoryBean已被弃用。

然后我检查了其他与此问题相同的问题,但没有找到任何解决方案。我应该如何更改配置以启动应用程序?

0 投票
1 回答
919 浏览

spring-data-jpa - Spring Data JPA Cassandra 覆盖保存方法

我不断收到这条消息,Spring 将使用 CassandraRepositoryFactoryBean 覆盖我的工厂 bean 定义。这会导致问题,因为我覆盖工厂的原因是要覆盖saverepo 上的方法,以便我可以自动填充createTimestampupdateTimestamp方法。

显然这里有一些优先顺序或缺少配置,但我找不到它。也许你可以?

我的弹簧配置:

}

我在哪里覆盖TypedIdCassandraRepository

如果你对BaseTimestampEntity

我在哪里实现该save方法:

最后是我的工厂:

差点忘了回购:

什么都没有发生,但插入 Cassandra 数据库的 updateTimestamp 和 createTimestamp 是,我可以告诉你在调试时没有命中null覆盖方法。save

0 投票
2 回答
398 浏览

java - 我将如何使用泛型类型的 bean 进行配置类?(包括示例)

我想提供一个基本配置类,它将处理创建具有泛型类型的 bean,该泛型类型在您扩展类时定义,如下所示。但它从不调用@Bean方法。

0 投票
1 回答
126 浏览

java - 如何允许基本自动配置类?当我有两个扩展它时,只有第一个被调用

我有一个基本的自动配置类,它使用泛型来创建你想要的 bean。但是当我测试有两个都扩展该基本配置类的配置时,第二个永远不会创建它的 bean。

我相信这是因为两者的方法名称相同,所以 Spring 假定它已经创建。

有没有办法根据泛型类型动态设置名称?(或其他一些解决方案)

0 投票
3 回答
213 浏览

java - 有没有办法让@Bean 创建的一些 bean 可区分?

这是一个奇特的用例,因此需要一些耐心才能理解,并且可能需要奇特的解决方案。

上下文

我正在制作一个与 Spring 一起使用的库,该库对上下文中存在的特定 bean 实例执行自动操作,由@Bean方法创建,而不是由@ComponentScan. 如果可能的话,bean 应该不是通过类型区分,而是通过其他方式区分,最好是工厂方法上的注释。

这是理想的情况。例如,假设有 2 种 bean 生产方法:

在这里,第二个 bean 是特殊的,因为@Special创建它的方法上的注释。但任何使其可区分的机制都是一种选择

然后,我想以某种方式只获得特殊的豆子。

警告

我知道如果所有 bean 都实现相同的接口,我可以按类型注入它们。但这应该尽可能透明,需要对现有应用程序进行尽可能少的更改。

潜在的方法

这是我想到的两种广泛的方法:

1)进入注册bean的过程,并将bean实例透明地包装到某种容器中(我很确定这部分是可行的)。例如

然后,注入所有类型的 bean Wrapper。这里的问题显然是重复...或者我可以动态生成一个代理实例来实现一个Wrapper接口,所以它可以同时充当原始 bean包装器。我确实说过我也可以接受异国情调的解决方案,不是吗?

2) Spring 已经将 bean候选者与实际注册的 bean 区分开来(例如@ComponentScan,可以通过包、注释等过滤候选者)。我希望也许可以进入这个过程并获得候选描述符,这些描述符仍然包含一些有用的元数据(如他们的工厂方法),这将允许我以后区分这些 bean 实例。