无法在类中自动装配bean

时间:2015-09-16 06:49:21

标签: java spring javabeans

下面是我定义bean的配置类。

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.abc.billing.web.controllers", "com.abc.billing.core.services" })
@Import(PersistenceConfig.class)
public class WebAppConfig extends WebMvcConfigurerAdapter {

  @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MappingJackson2HttpMessageConverter());
  }

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new BusinessUnitInterceptor());
  }

  @Bean
  public TripsExpiryTask tripsExpiryTask() {
    return new TripsExpiryTask();
  }

  @Bean
  public TripsExpiryJob tripsExpiryJob() {
    return new TripsExpiryJob();
  }

  @Bean
  public TripsExpiryJobTrigger tripsExpiryJobTrigger() throws SchedulerException {
    return new TripsExpiryJobTrigger();
  }

}

并且为了访问bean,我在另一个类中自动装配它(TripExpiryJob)

public class TripsExpiryJob implements Job {

  @Autowired
  TripsExpiryTask tripsExpiryTask;

  @Override
  public void execute(JobExecutionContext arg0) throws JobExecutionException {
    tripsExpiryTask.execute();
  }
}

但它无法在TripExpiryJob类中自动装载TripExpiryTask。

更新:

public class TripsExpiryTask {

    @Autowired
    BillableTripRepository btr;

    @Autowired
    BillableRequestRepository brr;

    public TripsExpiryTask() {
        System.out.println("Trips Expiry Job!");
    }

    private void updateProbableExpiredTrips(List<PBillableTrip> expiredTrips) {
    //Some Code
    }

    private void expireTrips() {
        // Some Code
    }

    public void execute() {
        expireTrips();
    }
}

3 个答案:

答案 0 :(得分:1)

要初始化@Autowired对象,请确保您正在执行

&LT;上下文:组分扫描&GT;

在配置文件中。

如果您使用的是Configuration类而不是servlet-config.xml,则必须执行

课堂上的@ComponentScan

答案 1 :(得分:0)

检查您在xml文件中创建自动装配的对象。

&lt; bean id =&#34; object&#34; class =&#34;您班级的完全限定名称&#34; /&GT;

或自动初始化使用

&lt; context:annotation-config /&gt;

答案 2 :(得分:0)

问题似乎出现在WebAppConfig类中。我为工作做了一个单独的配置类,它运行良好。