问题标签 [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.
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
java - 如何根据注解为@Autowire 字段提供不同的bean 实现?
我有一个配置类,它提供了相同基 bean 接口的两个实现。我希望根据字段上的注释有条件地在自动装配字段上设置这些。
这是配置类的伪代码:
如何使带注释的字段由第二个 bean 填充?
java - 二级类型依赖注入在 Spring Boot 中不起作用
根据文档,spring boot 将自动检查在使用 @Configuration 注释的任何类中创建的 bean 类对象,并将覆盖该类的默认 bean,并返回具有定义时注入的任何属性的对象。但是当我在 junit 中测试这个应用程序时,它不会返回任何被注入的值。我所有的类都定义在同一个包中我的代码如下,
//引擎类
//测试配置类
//Spring启动主应用
//JUnit测试类
请帮助我找到解决上述问题的方法。
java - Spring Boot中的原始类型依赖注入
您能否为我提供一个在 Spring Boot 中进行原始类型依赖注入的示例。我已经尝试过一次,但是我的自定义 bean 定义类 TestConfiguration 没有被 Spring Boot 应用程序检测或识别。这是我的代码,
//引擎类
//测试配置
//spring主应用
//JUnit 测试
请就上述问题提出任何解决方案
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 排序如下:
代替:
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
已被弃用。
然后我检查了其他与此问题相同的问题,但没有找到任何解决方案。我应该如何更改配置以启动应用程序?
spring-data-jpa - Spring Data JPA Cassandra 覆盖保存方法
我不断收到这条消息,Spring 将使用 CassandraRepositoryFactoryBean 覆盖我的工厂 bean 定义。这会导致问题,因为我覆盖工厂的原因是要覆盖save
repo 上的方法,以便我可以自动填充createTimestamp
和updateTimestamp
方法。
显然这里有一些优先顺序或缺少配置,但我找不到它。也许你可以?
我的弹簧配置:
}
我在哪里覆盖TypedIdCassandraRepository
如果你对BaseTimestampEntity
我在哪里实现该save
方法:
最后是我的工厂:
差点忘了回购:
什么都没有发生,但插入 Cassandra 数据库的 updateTimestamp 和 createTimestamp 是,我可以告诉你在调试时没有命中null
覆盖方法。save
java - 我将如何使用泛型类型的 bean 进行配置类?(包括示例)
我想提供一个基本配置类,它将处理创建具有泛型类型的 bean,该泛型类型在您扩展类时定义,如下所示。但它从不调用@Bean
方法。
java - 如何允许基本自动配置类?当我有两个扩展它时,只有第一个被调用
我有一个基本的自动配置类,它使用泛型来创建你想要的 bean。但是当我测试有两个都扩展该基本配置类的配置时,第二个永远不会创建它的 bean。
我相信这是因为两者的方法名称相同,所以 Spring 假定它已经创建。
有没有办法根据泛型类型动态设置名称?(或其他一些解决方案)
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 实例。