下面是我定义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();
}
}
答案 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类中。我为工作做了一个单独的配置类,它运行良好。