2017-07-01 58 views
0

我正在嘗試構建一個spring引導web應用程序。我想從另一個jar中引用一個類。類名稱是SalaryHandler。 我已經做在類以下配置具有 @SpringBootApplication註釋:使用Spring引導,我無法引用另一個罐子中存在的類

@Bean 
public SalaryHandler iSalary() { 
    return new SalaryHandler(); 
} 

在類中,其中要求中,我使用的自動裝配註釋這樣的: 包你好;

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 
import org.springframework.stereotype.Service; 

import com.salary.SalaryHandler; 
//@Service - not working 
//@Component - not working 
public class SalaryDelegatorImpl implements SalaryDelegator { 

    @Autowired 
    private SalaryHandler iSalary; 

    @Override 
    public void show() { 
     iSalary.testSalary(); 

    } 

} 

的代碼編譯罰款,但是當這種iSalary對象用於調用它的方法,空指針異常被拋出。

只是要注意的是SalaryHandler存在另一個罐子裏,也沒有使用任何彈簧註釋,其代碼如下:

package com.salary; 

public class SalaryHandler implements ISalary { 

public void testSalary() { 
    System.out.println("Salary test successful..."); 
    } 

} 
+0

你試圖連接到的類的設置是什麼? –

+0

就像之前的評論者@達倫所說,如果你可以發佈你正在嘗試自動裝入的課程,這將有所幫助。這很可能是您嘗試在非託管類中使用'@ Autowire'。 '@ Autowire'需要用在Spring管理類中,例如定義爲@ Component或'@ Service'。 – MickG

回答

0

你需要嘗試自動裝配與@Component。爲了得到這個工作,你必須在你的@Configuration類中註解一個方法。像這樣的東西應該允許你自動調整類:

@Configuration 
@ComponentScan("com.package.where.my.class.is") 
public class ConfigClass{ 

    @Bean 
    public JPADataService jpaDataService(){ 
    return new JPADataService(); 
    } 
} 
+0

我正在使用@SpringBootApplication註解..我曾嘗試通過scanBasePackages屬性給它,但那也不起作用 –

0

我能解決這個問題。問題出在代碼內部,我使用new運算符(從工廠類中)調用SalaryDelegatorImpl,所以這不是由Spring管理的。因此,SalaryHandler上的@Autowired不起作用。 我改變了我的工廠是春天管理,然後它工作正常。

感謝大家的支持。

相關問題