当前位置: 首页 > 知识库问答 >
问题:

考虑在您的配置中定义一个类型为“DAO接口”的bean

卓学智
2023-03-14

我计划将所有DAO层代码分解到一个单独的Spring boot data项目中。因此,我创建了两个项目,其中一个将具有所有数据库相关代码,另一个将具有服务代码,然后使用第一个项目作为依赖项来交互任何数据库相关操作。

Project1:DatabaseInteractionService Project2:InsuranceCleanupService

InsuranceCleanupService启动类

package com.ics;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
@EntityScan(basePackages = {"com.ms.base.entity", "com.dis", "com.dis.config", "com.dis.dao", "com.dis.dao.Impl" })

public class InsuranceCleanupServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(InsuranceCleanupServiceApplication.class, args);
    }

}
package com.dis;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

@SpringBootApplication
@EntityScan("com.ms.base.entity")
public class DatabaseInteractionServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(DatabaseInteractionServiceApplication.class, args);
    }


    @Value("spring.datasource.driverClassName")
    String driverClassName;
    
    @Value("spring.datasource.url")
    String url;
    
    
    @Value("spring.datasource.username")
    String username;
    
    @Value("spring.datasource.password")
    String password;
    
    @Bean
    public DataSource dataSource()
    {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
    
    @Bean
    public JdbcTemplate jdbcTemplate()
    {
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource());
        return jdbcTemplate;
    }
}

我使用的是Mysql数据库和Spring-Data。当独立工作时,似乎没有问题。分离后,我面临着以下问题。

考虑在您的配置中定义一个类型为'com.dis.dao.employeeDao'的bean。

共有1个答案

汪晟睿
2023-03-14

既然一个项目将用作依赖项,为什么您有2个@SpringBootApplication类?在我看来,DatabaseInteractionServiceApplication更像是一个@Configuration类,而不是@SpringBootApplication

除此之外,错误

考虑在配置中定义类型为'com.dis.dao.employeeDao'的bean

@EntityScan(basePackages = {"com.ms.base.entity", "com.dis", "com.dis.config", "com.dis.dao", "com.dis.dao.Impl" })
@ComponentScan(basePackages = {"com.dis"})

这就足够了,因为它还将扫描子包,例如“com.dis.config”、“com.dis.dao”、“com.dis.dao.impl”

只为您的实体包保留@entityscan(DatabaseInteractionServiceApplication):

@EntityScan("com.ms.base.entity")
 类似资料: