2017-09-19 12 views
2

나는 다음 있습니다. 'ecosmart_BackupService'이름을 가진 bean을 생성 오류 :콩 인스턴스화 주문

Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'myApp_DropboxService' defined in URL 
[jar:file:/E:/Cuba/myApp/deploy/tomcat/webapps/app-core/WEB-INF/lib/app-core-0.1-SNAPSHOT.jar!/com/daryn/myApp/service/DropboxServiceBean.class]: 
Instantiation of bean failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to 
instantiate [com.daryn.myapp.service.DropboxServiceBean]: Constructor 
threw exception; nested exception is java.lang.NullPointerException 

현재 코드 내가

오류를 시도하고있다 : 나는 다음과 같은 오류가 계속 불만족 종속성 필드 'dropboxService'을 통해 표현을; 중첩 예외는 org.springframework.beans.factory.BeanCreationException입니다 : 이름 'ecosmart_DropboxService'로 bean을 생성하는 중 오류가 발생했습니다 : init 메소드를 호출하지 못했습니다. 상자의 예외는 봄 개체가 구축 된 후에 만 ​​필드를 주입하고 ACCESS_TOKEN도 그 전에 초기화 귀하의 경우 java.lang.NullPointerException이

@Service(DropboxService.NAME) 
public class DropboxServiceBean implements DropboxService { 

    @Inject 
    private CustomConfig customConfig; 


    private String ACCESS_TOKEN = ""; 
    DbxRequestConfig config; 
    DbxClientV2 client; 



    @PostConstruct 
    public void postConstruct() { 
     System.out.println("**************Running post construct"); 
     ACCESS_TOKEN = customConfig.getDropboxAppToken(); 
     config = new DbxRequestConfig("dropbox/java-tutorial", "en_US"); 
     client = new DbxClientV2(config, ACCESS_TOKEN); 
    } 
+0

주석을'@ PostConstruct' 주석에 넣으십시오. 주입은 객체가 생성 된 후에 만 ​​발생할 수 있습니다. –

+0

@postconstruct를 사용하여 업데이트했습니다. 그러나 여전히 작동하지 않습니다. 아마도 CustomConfig bean이 부팅 할 때까지 bean이 인스턴스화되기 때문일 것입니다 ... – Daryn

+0

당신은'myApp_DropboxService'로 시작했고 이제'ecosmart_BackupService'에 문제가 있습니다. 그래서 문제는 아마도이 클래스의 코드와 같습니다 . – Oleg

답변

1

입니다.

당신은 생성자를 만들고과 같이 생성자에서 빈을 주입해야합니다

@Inject 
public DropboxServiceBean(CustomConfig customConfig) { 
    this.customConfig = customConfig; 
    ACCESS_TOKEN = customConfig.getDropboxAppToken(); 
} 
+0

점점 : 생성자를 통한 Bean 인스턴스 생성에 실패했습니다. 중첩 예외는 org.springframework.beans.BeanInstantiationException : [com.daryn.ecosmart.service.DropboxServiceBean]을 인스턴스화하지 못했습니다 : 생성자가 예외를 throw했습니다. 중첩 예외는 java.lang.NullPointerException입니다. accessToken – Daryn

+0

@Daryn 질문을 현재 코드로 업데이트하십시오. – Oleg

+0

@Daryn 생성자 안에'new DbxClientV2 (config, ACCESS_TOKEN);를 옮겨야합니다. – Oleg

-1

글쎄, 이후 많은 여기에, 주위에 비료를 내 좋은 솔루션입니다. 왜 CustomConfig가 처음으로 초기화되지 않을지 전혀 알지 못합니다 ...

@Service(DropboxService.NAME) 
public class DropboxServiceBean implements DropboxService {   


    @Inject 
    private CustomConfig customConfig; 


    private String ACCESS_TOKEN = ""; 
    DbxRequestConfig config =new DbxRequestConfig("dropbox/java-tutorial", "en_US"); 
    DbxClientV2 client; 

    public static boolean isInitiated = false; 

    public void generateDbxClient(){ 
     ACCESS_TOKEN = customConfig.getDropboxAppToken(); 
     client = new DbxClientV2(config, ACCESS_TOKEN); 
    } 

    @Override 
    @Transactional 
    public void uploadFile(FileDescriptorExt file, String path) { 

     if(isInitiated==false){ 
      System.out.println("generating client"); 
      generateDbxClient(); 
      isInitiated=true; 
     }