首页 > 解决方案 > 只有在重构包名称之后,才考虑在您的配置中定义一个 * 类型的 bean

问题描述

这段代码运行良好,我只是重构了包名,spring 上下文不能再注入这个 bean。我确信新的包名称仍然与@ComponentScan范围匹配

@Repository("tenantsConfigRepository")
public interface TenantsConfigRepository extends JpaRepository<TenantsConfig, Long> {
    public TenantsConfig deleteByName(String name);
}
@Service
public class TenantsConfigService {

    TenantsConfigRepository tenantsConfigRepository;


    @Autowired
    public TenantsConfigService(TenantsConfigRepository tenantsConfigRepository) {
        this.tenantsConfigRepository = tenantsConfigRepository;
    }

    public List<TenantsConfig> findAll() {
        return tenantsConfigRepository.findAll();
    }

    public Optional<TenantsConfig> find(long id) {
        return tenantsConfigRepository.findById(id);
    }

    public void saveOrUpdate(TenantsConfig tenantsConfig) {
        tenantsConfigRepository.save(tenantsConfig);
    }

    public void delete(TenantsConfig tenantsConfig) {
        tenantsConfigRepository.delete(tenantsConfig);
    }

    public void deleteByName(String name) {
        tenantsConfigRepository.deleteByName(name);
    }
}

应用程序无法启动并打印此文本

***************************
APPLICATION FAILED TO START
**************************

Description:

Parameter 0 of constructor in com.example.admin.service.TenantsConfigService required a bean named 'entityManagerFactory' that could not be found.


Action:

Consider defining a bean named 'entityManagerFactory' in your configuration.

标签: javaspringspring-boot

解决方案


谢谢大家的回复,我想通了,我使用的是配置类中的数据源,这些配置的范围仅限于特定的包,我只是更改了basePackages属性以匹配新的包名称。

@Configuration
@EnableJpaRepositories(basePackages = "com.example.admin", entityManagerFactoryRef = "adminEntityManager", transactionManagerRef = "adminTransactionManager")

em.setPackagesToScan("com.example.admin.entity");

em 指的是 EntityManager


推荐阅读