我正在尝试构建一个spring boot Web应用程序。我想从另一个jar中引用一个类。类名是SalaryHandler。 我在课堂上做了以下配置 @SpringBootApplication注释:
@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对象调用其方法时,将抛出nullpointer异常。
请注意,SalaryHandler存在于另一个jar中并且没有使用任何spring注释,其代码如下:
package com.salary;
public class SalaryHandler implements ISalary {
public void testSalary() {
System.out.println("Salary test successful...");
}
}
答案 0 :(得分:0)
你需要尝试使用@Component进行自动装配。为了使其工作,您必须在@Configuration类中注释一个方法。这样的事情应该允许你自动使用该类:
@Configuration
@ComponentScan("com.package.where.my.class.is")
public class ConfigClass{
@Bean
public JPADataService jpaDataService(){
return new JPADataService();
}
}
答案 1 :(得分:0)
我能解决这个问题。问题出在代码内部,我使用new运算符(来自工厂类内部)调用SalaryDelegatorImpl,因此不是由Spring管理的。结果,@ Aututired on SalaryHandler,无法正常工作。 我改变了我的工厂进行弹簧管理,然后工作正常。
感谢大家的支持。