2016-05-13 25 views
5

Spring için yeni ve öğrenme için bir uygulama yapmaya çalışıyorum ancak Autowiring'de sorun yaşıyorum, kodumu ekliyorum. Ben bahar botu üzerinde çalışıyorum.org.springframework.beans.factory.UnsatisfiedDependencyException: 'demoRestController' adıyla fasulye oluştururken hata oluştu

Bahar Önyükleme Kodu

public class DemoApplication { 

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

LoginBean.java

@Service 
@Component 
public class LoginBean { 
    private String userId; 
    private String pwd; 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getPwd() { 
     return pwd; 
    } 

    public void setPwd(String pwd) { 
     this.pwd = pwd; 
    } 

DemoRestController.java

@RestController 
@EnableAutoConfiguration 
@RequestMapping("/demo") 
@Component 
public class DemoRestController { 


    private final LoginBean loginBean; 

    @Autowired 
    public DemoRestController(LoginBean loginBean) { 
     this.loginBean=loginBean; 
    } 

    @RequestMapping(value = "/login/{id},{pwd}", method = RequestMethod.GET, produces = "application/json") 
    public @ResponseBody LoginBean loginService(@PathVariable String id, @PathVariable String pwd) { 
     //LoginBean loginBean = new LoginBean(); 

     loginBean.setUserId(id); 
     loginBean.setPwd(pwd); 
     return loginBean; 
    } 

benim @Autowired çalışması için senaryolar aşağıdaki çalıştı:

  1. @Otomatik Oturum Açmak için Oturum AçınBağlı oturum açmaBölge;
  2. Oluşturulan getto ayarlayıcısı GirişBirim Denetleyici sınıfı ve otomatik kablolu ayarlayıcılar;
  3. Yukarıdaki kodda verildiği gibi, Denetleyicinin oluşturucusu ve otomatikleştirilmiş; Aşağıda

Ben

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'demoRestController': Unsatisfied dependency expressed through constructor argument with index 0 of type [com.ag.digital.demo.bean.LoginBean]: No qualifying bean of type [com.ag.digital.demo.bean.LoginBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ag.digital.demo.bean.LoginBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.6.RELEASE.jar:4.2.6.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at com.ag.digital.demo.boot.DemoApplication.main(DemoApplication.java:14) [classes/:na] 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ag.digital.demo.bean.LoginBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    ... 19 common frames omitted 
+0

Merhaba Sorunumu çözdüm. @Andy Değerli yanıtınız için çok teşekkür ederim. Üzgünüm, SpringBoot'un Uygulama sınıfını da sağlamalıydım.Aslında asıl sorun Spring Boot'un Uygulama Sınıfındaydı. Ben Code sağlıyorum. genel sınıf DemoApplication { \t public void ana (String [] args) { \t \t SpringApplication.run (DemoApplication.class args); \t} } Sınıf adı ve parametre sınıfı adı aynı olmalı ve bu benim asıl sorunumdu. – Brain

cevap

13

Sizin DemoApplication sınıf com.ag.digital.demo.boot pakette bağlıdır ve LoginBean sınıf com.ag.digital.demo.bean pakette olduğu alıyorum hatadır. Varsayılan paketler (@Component ile açıklamalı sınıflar), aynı paket içinde veya ana uygulama sınıfınızın DemoApplication alt paketinde bulunuyorsa bulunur. Bu, bağımlılık enjeksiyonunun başarısız olması için LoginBean'un bulunmadığı anlamına gelir.

  1. com.ag.digital.demo.boot içine Taşı LoginBean veya alt paketi:

    sorunu çözmek için birkaç yol vardır.

  2. DemoApplication üzerinde olması gereken @SpringBootApplicationscanBasePackages özniteliğini kullanarak bileşenler için taranan paketleri yapılandırın.

soruna neden olmayan başka şeylerden bazıları, ama oldukça doğru kodu ile Yayınladığınız değildir:

  • @Service böylece gerekmez @Component bir uzmanlık olduğunu Her iki LoginBean Benzer
  • üzerine, @RestController@Component bir uzmanlık böylece DemoRestController
  • DemoRestController hem gerekmez @EnableAutoConfiguration için alışılmadık bir yer olmasıdır. Bu açıklama genellikle doğrudan ana uygulama sınıfınızda (DemoApplication) ya da @ComponentScan, @Configuration ve @EnableAutoConfiguration'un bir kombinasyonu olan @SpringBootApplication aracılığıyla bulunur.
İlgili konular