hibernate 在spring Boot JPA中从自动配置中排除DataSourceAutoConfiguration类时,找不到UserRepository Bean

oxf4rvwz  于 2023-10-23  发布在  Spring
关注(0)|答案(1)|浏览(165)

最初,当我试图加载多个.sql文件在应用程序启动时运行时,我得到了下面的错误。
org.springframework.beans.factory.BeanCreationException:创建在类路径resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]中定义的名为“dataSourceScriptDatabaseInitializer”的bean时出错:无法从db/scripts/*.sql加载资源
为了解决这个问题,我排除了DataSourceAutoconfiguration.class,如下所示:@ SpringBoot应用程序(={DataSourceAutoBootation.class}
但现在不是,因为所有@Repository接口bean都没有创建。
com.atlokal.user.mgmt.user.dao.UserDaoImpl中的字段userRepository需要类型为“com.atlokal.user.mgmt.user.dao.UserRepository”的Bean,但找不到该Bean。
进样点具有以下注解:- @org.springframework.beans.factory.annotation.Autowired(required=true)
行动:
考虑在您的配置中定义一个类型为“com.atlokal.user.mgmt.user.dao.UserRepository”的bean。
你能帮我解决这个问题吗?

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class AtlokalUserMgmtApplication {

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

}

application.properties

spring.jpa.hibernate.ddl-auto=none
spring.sql.init.mode=always
spring.sql.init.data-locations=db/scripts/*.sql
spring.jpa.defer-datasource-initialization=false

UserDaoImpl.java
@Component
public class UserDaoImpl implements UserDao {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private ModelMapper modelMapper;
    @Override
    public UserEntity createUser(UserDto userDto) {
        return userRepository.save(modelMapper.map(userDto,UserEntity.class));
    }
}

UserRepository.java
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Long> {
}
nhhxz33t

nhhxz33t1#

如错误所示,文件未找到。请使用classpath:以指定需要从资源中拾取SQL文件。

spring.sql.init.data-locations=classpath:db/scripts/*.sql

相关问题