使用Spring启动,我无法引用另一个jar中的类

时间:2017-07-01 17:26:11

标签: spring spring-boot

我正在尝试构建一个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...");
   }

}

2 个答案:

答案 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,无法正常工作。 我改变了我的工厂进行弹簧管理,然后工作正常。

感谢大家的支持。