最初,当我试图加载多个.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> {
}
1条答案
按热度按时间nhhxz33t1#
如错误所示,文件未找到。请使用classpath:以指定需要从资源中拾取SQL文件。