BeancreationException + NosuchBeandefinition异常 [英] Beancreationexception+NosuchBeandefinition exception

查看:210
本文介绍了BeancreationException + NosuchBeandefinition异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用SpringBoot处理Spring 4应用程序.

I am working on Spring 4 application with SpringBoot.

在com.test.tm程序包中,
应用类别:

In com.test.tm package,
Application class:

@SpringBootApplication   
@EnableJpaRepositories( repositoryFactoryBeanClass = GenericRepositoryFactoryBean.class )  
@Import( { HikariDataSourceConfig.class } )  
public class Application {  
   public static void main( String[] args )
   {
    SpringApplication.run(Application.class, args);
   }  
}  

在com.test.tm.entities包中,
用户类别:

In com.test.tm.entities package,
User Class:

@Table( name = "test.user" )
@Entity
public class User implements Serializable {  
  @Id
  @GeneratedValue( strategy = GenerationType.AUTO )
  private Integer id;
  private String message;  
  ....  
}  

在com.test.tm.user中
UserService.class:

In com.test.tm.user
UserService.class:

@Service
@Transactional( rollbackFor = Exception.class )
public class UserService {

@Autowired
private GenericRepository<User, Serializable> gr;

 public User saveEntity( User usr )
 {
    return gr.save(usr);
 }

 public String getUser()
 {
    //Get User logic
 }  
}  

GenericRepository.java:

GenericRepository.java:

@NoRepositoryBean
public interface GenericRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID> {
    public List<T> findByNamedQuery( String name );
    public List<T> findByNamedQueryAndParams( String name, Map<String, Object> params );
 }  

还有一个GenericRepositoryImpl.java,其中实现了上述方法的逻辑.

There is a GenericRepositoryImpl.java as well where logic for above methods are implemented.

在运行Application.java时,出现以下错误:

On running Application.java, I am getting following error:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.test.utils.spring.repo.GenericRepository com.test.tm.user.UserService.gr; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type[com.test.utils.spring.repo.GenericRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.Dependency annotations: {@ org.springframework.beans.factory.annotation.Autowired(required = true) }

  1. 我没有定义名为userService的变量,但仍显示错误.
  2. 我可以通过任何方式解决上述问题.

推荐答案

Ad. 1. Spring使用默认名称创建userService bean,如文档.

Ad. 1. Spring creates userService bean with default name, as indicated in documentation.

广告. 2.我不起诉,但是GenericRepositoryImpl可能不在 com.test.tm包?如果是,则使用正确的软件包声明指定其他@ComponentScan批注,即@ComponentScan("com.test.utils"),或者-如果使用Boot 1.3+,则-修改@SpringBootApplication(scanBasePackages={"com.test.utils","com.test.tm"})

Ad. 2. I'm not sue, sure, but perhaps GenericRepositoryImpl is outside of com.test.tm package? If yes, then specify additional @ComponentScan annotation with proper package declaration ie.@ComponentScan("com.test.utils"), or - if You use Boot 1.3+ - modify @SpringBootApplication(scanBasePackages={"com.test.utils","com.test.tm"})

这篇关于BeancreationException + NosuchBeandefinition异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆