是什么导致我的自动装配对象抛出空指针异常?

时间:2019-05-12 00:45:45

标签: java spring nullpointerexception javabeans autowired

我有一个公共的final类,它扩展了Configured并实现了Tool,但拒绝看到自动装配的变量。此类被传递给静态ToolRunner.run方法,并且我不确定从增加的复杂度中应该得到什么影响。

我已经将context.getBean的逻辑转移到一个单独的类中,并且自动装配可以工作,但是引入了更多的错误(使ToolRunner的配置无效)。该单独类的代码是Driver类中代码的完整副本,并注释为@Component。为什么Autowired为一个单独的班级工作,但为什么我不知道这个班级呢?

这是Driver类中的代码:

@Component
public final class Driver extends Configured implements Tool {
private static Driver driver = new Driver();
@Autowired
private Connection connection;

public static void main(String[] args) throws Exception{
int exitCode = ToolRunner.run(new Configuration(),driver, args);
}

@Override
public int run(String[] args) throws Exception{
AbstractApplicationContext context = new AnnotationConfigApplicationContext(HdfsConfig.class);
driver = context.getBean(Driver.class);
\\and it continues till I hit my getConnection NPE

这里是HdfsConfig.class:

@Configuration
@ComponentScan(basePackages = {"shared.folder"}
public class HdfsConfig{

@Bean
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public org.apache.hadoop.conf.Configuration configuration = new Configuration();
\\So on and so on until I return my configuration

我真正想做的是将我的ToolRunner信息和连接对象保留在类中,并填充所有内容并感到满意。我怀疑有关我的Driver变量的性质正在破坏事物,但原因是逃脱了我脆弱的大脑。

0 个答案:

没有答案