我不知道这是否会有帮助,但我需要告诉你我的问题的全部起源-它是如何开始的。
在我开始构建之前,一切都是正确的 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.PersonEntityDao
及 PersonRepositoryImpl
也在
web module
Package 内: com.app.persistence.repository.PersonRepositoryImpl
. 这个 main class
在包中的web模块中: com.app.App
我真的不知道为什么这个bean会有问题,因为我没有在代码中做任何更改,只是添加了新的目录 com.app.security
我甚至不用这些东西 classes
在上面
这个项目是 multi-module
项目地点 Repository
在 domain
模块,然后 RepositoryImpl
及 EntityDao
在 web
模块(还有我的 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'
发生了我以前没有发生过的事
1条答案
按热度按时间cld4siwp1#
实体似乎没有初始化,我怀疑由于您排除了dbautoconfig:(exclude={datasourceautoconfiguration.class})
尝试更正由此导致的url错误。