spring找不到bean

mzsu5hc0  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(414)

我不知道这是否会有帮助,但我需要告诉你我的问题的全部起源-它是如何开始的。
在我开始构建之前,一切都是正确的 security .
我遇到的第一个问题是我的
SecretKey bean 从…起
@Configuration class 哪个 Spring 找不到。我通过创建 init 方法 @PostConstruct 注解。
然后第二个问题出现了,这是我以前没有遇到过的-

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

我通过添加 (exclude={DataSourceAutoConfiguration.class})@SpringBootApplication my中的注解
main class 然后第三个也是目前最后一个问题出现了,我以前也没有遇到过。


***************************

APPLICATION FAILED TO START

***************************  

Description:

    Parameter 0 of constructor in com.app.persistence.repository.PersonRepositoryImpl required a bean of type 'com.app.persistence.dao.PersonEntityDao' that could not be found.

    Action:

    Consider defining a bean of type 'com.app.persistence.dao.PersonEntityDao' in your configuration.
public interface PersonRepository extends CrudRepository<Person, Long> {
        Optional<Person> findByName(String name);
        Optional<Person> findByAddress(Address address);
    }
public interface PersonEntityDao extends JpaRepository<PersonEntity, Long> {
        Optional<PersonEntity> findByName(String name);
    }
@Repository
    @RequiredArgsConstructor
    public class PersonRepositoryImpl implements Repository {
        private final PersonEntityDao personEntityDao;
        //methods overriden from Repository
    }

路径如下所示: PersonRepository
domain module Package 内: com.app.model.person.repository.PersonRepository 那么 PersonEntityDao
web module Package 内: com.app.persistence.dao.PersonEntityDaoPersonRepositoryImpl 也在
web module Package 内: com.app.persistence.repository.PersonRepositoryImpl . 这个 main class 在包中的web模块中: com.app.App 我真的不知道为什么这个bean会有问题,因为我没有在代码中做任何更改,只是添加了新的目录 com.app.security 我甚至不用这些东西 classes 在上面
这个项目是 multi-module 项目地点 Repositorydomain 模块,然后 RepositoryImplEntityDaoweb 模块(还有我的 main class )

@Configuration
@ComponentScan("com.app")
public class AppConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

    @Bean
    public SecretKey secretKey() {
        return Keys.secretKeyFor(SignatureAlgorithm.ES512);
    }
}

然后我想在我的生活中使用这个 TokensService 像这样的课程:

@Service
@RequiredArgsConstructor
public class TokensService {
    private final SecretKey secretKey;

    public TokensDto createTokens(Authentication authentication) {
        //here I used this secretKey in 
        //Jwts.builder().[...].signWith(secretKey).build();
    }

发生了以下错误: Error creating bean with name 'secretKey' 所以我创造了 init 方法如下:

@PostConstruct
    private void init() {
        var context = new AnnotationConfigApplicationContext();
        context.register(AppConfig.class);
        context.refresh();
        secretKey = context.getBean("secretKey", SecretKey.class);
    }

bean错误被解决了,但是错误 DataSource: 'url' 发生了我以前没有发生过的事

cld4siwp

cld4siwp1#

实体似乎没有初始化,我怀疑由于您排除了dbautoconfig:(exclude={datasourceautoconfiguration.class})
尝试更正由此导致的url错误。

相关问题