定义豆子的春季启动

发布于 2025-01-23 22:19:09 字数 2544 浏览 2 评论 0原文

我有一个有趣的错误,我说这很有趣,因为我的项目正常工作,而且崩溃了。

我相信我已经实施了我应该实施的一切来实现多数据源。

在上下文初始化中遇到的异常 - 取消刷新尝试:org.springframework.beans.factory.unsatisfieddepperencyenception:错误创建用名称'quoteController'创建bean [c:\ users \ s4 \ s4 \ desktop \ s4 \ desktop \ s4projects \ s4projects \ s4projects \ s4projects \ sove intrananet \ source intrananet \ source intrananet \ sim \ back-end \ target \ class \ com \ api \ controllers \ quotecontroller.class]:通过构造函数参数0表示的不满意的依赖性; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'quoteServiceImpl' defined in file [C:\Users\S4\Desktop\S4Projects\wirk-devserv-intranet\source\back-end\target\类\ com \ api \ services \ servission \ quoteserviceimpl.class]:通过构造函数参数1表示不满意的依赖性;嵌套的异常是org.springframework.beans.factory.nosuchbeandefinitionException:没有合格的bean of类型'com.api.repository.customer.customerreposore.customerrepository'可用:预期的至少1 bean,符合自动候选人的资格。依赖关系注释:{}

描述:

com.api.services.implementation.quoteserviceimpl中的构造函数的参数1所需的bean com.api.repository.customer.customerreposority'''

操作:

考虑在您的配置中定义'com.api.repository.customer.customerrepository'类型的bean。

@Autowired
private final CustomerRepository customerRepository;
@Autowired
private final QuoteRepository quoteRepository;


@Component
public interface CustomerRepository extends JpaRepository<Customer, 
 Integer> {
 }

配置文件

 @EnableJpaRepositories(
    basePackageClasses = {
   QuoteRepository.class, 
     CustomerConfig.class
},
    entityManagerFactoryRef = "quoteEntityManager",
    transactionManagerRef = "quoteTransactionManager")

public class QuoteConfig {

@Bean(name = "quoteEntityManager")
@Primary
public LocalContainerEntityManagerFactoryBean quoteEntityManager(EntityManagerFactoryBuilder builder, @Qualifier("quoteDataSource") DataSource dataSource) {

    return builder
            .dataSource(dataSource)
            .packages(Quote.class)
            .persistenceUnit("S4DevservIntranet")
            .build();
}

@Primary
@Bean("quoteDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource quoteDataSource() {
    return DataSourceBuilder.create().build();
}

@Primary
@Bean("quoteTransactionManager")
public PlatformTransactionManager quoteTransactionManager(@Qualifier("quoteEntityManager") LocalContainerEntityManagerFactoryBean quoteEntityManager) {
    return new JpaTransactionManager(Objects.requireNonNull(quoteEntityManager.getObject()));
}
}

I have this funny error, I say it is funny because my project was working and it just crashed.

I believe I have implemented everything I was supposed to implement to achieve the multi data source.

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'quoteController' defined in file [C:\Users\S4\Desktop\S4Projects\wirk-devserv-intranet\source\back-end\target\classes\com\api\controllers\QuoteController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'quoteServiceImpl' defined in file [C:\Users\S4\Desktop\S4Projects\wirk-devserv-intranet\source\back-end\target\classes\com\api\services\implementation\QuoteServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.api.repository.customer.CustomerRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

Description:

Parameter 1 of constructor in com.api.services.implementation.QuoteServiceImpl required a bean of type 'com.api.repository.customer.CustomerRepository' that could not be found.

Action:

Consider defining a bean of type 'com.api.repository.customer.CustomerRepository' in your configuration.

@Autowired
private final CustomerRepository customerRepository;
@Autowired
private final QuoteRepository quoteRepository;


@Component
public interface CustomerRepository extends JpaRepository<Customer, 
 Integer> {
 }

Config File

 @EnableJpaRepositories(
    basePackageClasses = {
   QuoteRepository.class, 
     CustomerConfig.class
},
    entityManagerFactoryRef = "quoteEntityManager",
    transactionManagerRef = "quoteTransactionManager")

public class QuoteConfig {

@Bean(name = "quoteEntityManager")
@Primary
public LocalContainerEntityManagerFactoryBean quoteEntityManager(EntityManagerFactoryBuilder builder, @Qualifier("quoteDataSource") DataSource dataSource) {

    return builder
            .dataSource(dataSource)
            .packages(Quote.class)
            .persistenceUnit("S4DevservIntranet")
            .build();
}

@Primary
@Bean("quoteDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource quoteDataSource() {
    return DataSourceBuilder.create().build();
}

@Primary
@Bean("quoteTransactionManager")
public PlatformTransactionManager quoteTransactionManager(@Qualifier("quoteEntityManager") LocalContainerEntityManagerFactoryBean quoteEntityManager) {
    return new JpaTransactionManager(Objects.requireNonNull(quoteEntityManager.getObject()));
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南街九尾狐 2025-01-30 22:19:09
  1. 您不需要使用@Component注释,因为您使用了Spring-Data JParepository接口。但是,如果您不必使用@repository注释。
  2. 在这一部分中,您在jparepositories列表中添加customerconfig类,而不是
 @EnableJpaRepositories(
    basePackageClasses = {
   QuoteRepository.class, 
     CustomerConfig.class
},

@EnableJpaRepositories(
        basePackageClasses = {
       QuoteRepository.class, 
         CustomerRepository.class
    },
  1. You don't need to use @Component annotation since you use the spring-data JpaRepository interface. but if you wouldn't you have to use @Repository annotation.
  2. In this part you add CustomerConfig class instead CustomerRepository in the list of JpaRepositories
 @EnableJpaRepositories(
    basePackageClasses = {
   QuoteRepository.class, 
     CustomerConfig.class
},

It must be:

@EnableJpaRepositories(
        basePackageClasses = {
       QuoteRepository.class, 
         CustomerRepository.class
    },
鲜血染红嫁衣 2025-01-30 22:19:09

错误消息告诉它一切,似乎您没有为CustomerRepository创建BEAN,因此请使用@repository或@component注释类。

Error Message tells it everything, seems you haven't created bean for CustomerRepository, so annotate the class with @Repository or @Component.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文