我有一个带应用程序的spring boot应用程序。属性文件和spring数据jpa。在应用程序中,我有一个外部依赖项,需要加载外部Spring项目的bean,该项目具有基于xml的配置。外部xml有自己的组件扫描和spring jpa设置,可以与应用程序中提供该DB属性的其他DB进行交互。属性文件,我正在使用@ImportResources将其bean注入父应用程序。但是,当我在做这个spring时,jpa并没有加载接口存储库bean。
问题是它加载了xml的bean,但无法加载父项目的存储库bean。
Appconfig。班
@Configuration
@ComponentScan(basePackages = {"com.xx.xx"})
public class AppConfig {
}
配置属性。班
@Configuration
@Import({AppConfig.class})
@ImportResource("classpath:xx-context.xml")
public class ConfigProperties {
}
xx上下文。xml(示例)
<mvc:annotation-driven />
<import resource="yy-repository.xml" />
<import resource="classpath:zz-config.xml" />
<context:component-scan base-package="com.yy.yy" />
<bean id="bean_id"
//defination
</bean>
<bean>
//defination
</bean>
</beans>
MainApp.java
@SpringBootApplication
public class MainApp extends SpringBootServletInitializer {
例外
申请无法启动
描述:
在com中输入AARepo。xx。xx。服务。实施。yyImpl需要“com”类型的bean。xx。x、 存储库。找不到AARepo。
行动
考虑定义“com”类型的bean。xx。xx。存储库。您的配置中的AARepo`
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@EnableJpaRepositories(basePackages = {"com.arcvideo.cloudagent.repo", "com.arcvideo.cloudagent.customer"})
@PropertySource("classpath:database.properties")
public class DatabaseConfig {
@Autowired
private Environment env;
@Bean(destroyMethod = "close")
DataSource dataSource() {
HikariConfig dataSourceConfig = new HikariConfig();
dataSourceConfig.setPoolName("springHikariCP");
dataSourceConfig.setConnectionTestQuery("SELECT 1");
dataSourceConfig.setDataSourceClassName(env.getProperty("hibernate.connection.driver_class"));
Properties dataSourceProperties = new Properties();
dataSourceProperties.put("url", env.getProperty("hibernate.connection.url"));
dataSourceProperties.put("user", env.getProperty("hibernate.connection.username"));
dataSourceProperties.put("password", env.getProperty("hibernate.connection.password"));
dataSourceConfig.setDataSourceProperties(dataSourceProperties);
return new HikariDataSource(dataSourceConfig);
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
entityManagerFactory.setDataSource(dataSource());
entityManagerFactory.setPackagesToScan(env.getProperty("entitymanager.packagesToScan"));
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
entityManagerFactory.setJpaVendorAdapter(vendorAdapter);
Properties additionalProperties = new Properties();
additionalProperties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
additionalProperties.put("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache"));
additionalProperties.put("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache"));
additionalProperties.put("hibernate.cache.region.factory_class", env.getProperty("hibernate.cache.region.factory_class"));
additionalProperties.put("hibernate.autoReconnect", env.getProperty("hibernate.autoReconnect"));
additionalProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
additionalProperties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
additionalProperties.put("hibernate.format_sql", env.getProperty("hibernate.format_sql"));
additionalProperties.put("javax.persistence.sharedCache.mode", env.getProperty("javax.persistence.sharedCache.mode"));
additionalProperties.put("hibernate.generate_statistics", env.getProperty("hibernate.generate_statistics"));
entityManagerFactory.setJpaProperties(additionalProperties);
return entityManagerFactory;
}
}
Springboot似乎看不到您的Repo类。您可以尝试将以下内容添加到主应用程序类中:@EnableJpaRepositories(“com.xx.x.repository”)
?!
---更新---
更新主应用程序中的完整配置。你能试试这个吗?!
@SpringBootApplication
@EnableJpaRepositories("com.xx.x.repository")
@EntityScan("com.xx.x.repository.entity")
public class MainApp extends SpringBootServletInitializer {
希望这有帮助。
使用AppConfigClass顶部的EnableAutoConfiguration
从这份官方文件中,很难确定这两个模块之间有什么区别。 谁能提供一个官方和规范的答案来解释两者的区别吗?
我们的Ops人员希望在应用程序启动时将Spring Boot配置(即所有属性)转储到日志文件中。我假设这可以通过使用annotation@ConfigurationProperties注入属性并打印它们来实现。 问题是是否有更好或内置的机制来实现这一目标。 考虑到似乎并没有一个内置的解决方案,除此之外,我还试着自己做饭。以下是我的想法: 这样做的挑战在于它不会打印application.yml中的
我需要添加测试到我的Spring Boot项目。使用rails框架有开发和测试数据库,它们是在新项目启动时创建的。迁移应用于两个数据库以保持数据库模式相等。不幸的是,我没有找到关于如何在Spring Boot中配置测试环境数据库以及如何使数据库结构等于dev的留档。 在Spring Boot测试的最佳实践是什么?如何为测试环境设置和添加测试数据?有什么例子吗?
我正在尝试为SSO配置Spring Boot和Keycloak。我已经创建了一个基本的AngularJS应用程序,它对Spring boot后端执行一些请求。使用此 Angular应用程序工作得很好,现在我正尝试在这里跟踪新的Spring Boot Keycloak apdater文档 这是我的keycloak.json,它在WEB-INF文件夹中。 以下是我的安全配置: 即使用户没有任何此角色,
我有一个设置,我正在使用以下内容: Spring靴1.5。13使用Spring云版本Edgware。S3 我有Spring云配置服务器,我的Spring启动应用程序是它的客户端 每个应用程序都有一个引导程序。带有配置服务器uri和一些其他属性的yml 在码头工人群上运行集装箱 我目前正在通过一个自定义脚本将Swarm secrets传递给客户端,该脚本读取放入/run/secrets/中的文件,并
我有一个旧的Spring启动应用程序(1.5.0-FINAL),我无法更改此版本。我想将redis添加到我的应用程序中,这就是我所做的: 1) 添加了maven dep: 2)将属性添加到我的引导 3) 添加了配置属性以检查是否启动连接: 上面的主机/端口不存在:我只想在启动时看到类似“连接错误”的东西,以确保我配置了所有内容,但没有显示任何内容!spring boot似乎没有尝试使用缓存。 我错