Spring依赖注入不能正常工作4

时间:2017-01-19 15:26:25

标签: spring spring-mvc

我试图注入我的对象,但它抛出空指针异常。请指教。我试图将资源名称作为大写和小写字母传递,但仍然会抛出相同的错误。

017-01-19T23:17:31.364+0800|Info: java.lang.NullPointerException
       at com.vinoth.test.AppMain.mainMethod(AppMain.java:8)
       at com.vinoth.test.HelloController.byParameter(HelloController.java:30)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:498)
       at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

以下是我的组件类。

 @Component
public class Processor {

public int sum(int a , int b){
    return a+b;
}

}

错误在线:      int value = processor.sum(1,2);

public class AppMain {
@Resource(name="Processor")
Processor processor;

public int mainMethod() {

    int value = processor.sum(1, 2);
    return value;
}

}

这是我的AppConfig类

   @Configuration
   @EnableWebMvc
   @ComponentScan(basePackages = "com.vinoth.test")
   public class AppConfig extends WebMvcConfigurerAdapter {
   @Bean
   public ViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new  InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/view/");
    viewResolver.setSuffix(".jsp");

    return viewResolver;
}

@Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("home");
    registry.addStatusController("/detail", HttpStatus.BAD_REQUEST);  
  }

@Override
public void    configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)    {
    configurer.enable();
}

 }

1 个答案:

答案 0 :(得分:1)

您尚未为组件指定bean名称,因此它具有默认名称,在您的情况下为processor,而不是Processor注释中所述的@Resource

  

约定是在命名bean时使用标准Java约定作为实例字段名称。也就是说,bean名称以小写字母开头,从那时起就是驼峰式的。这些名称的示例是(没有引号)'accountManager','accountService','userDao','loginController'等。

在此处阅读更多内容:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-beanname

如果我的建议无效,请尝试使用@Autowired@Inject注释。如果多个相同类型的bean使用@Qualifier来指定应该使用哪个bean。