无法在 class 中自动装配 bean
Unable to autowire bean in a class
下面是我定义 bean 的配置 Class。
@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,我在另一个 class(TripExpiryJob)
中自动装配它
public class TripsExpiryJob implements Job {
@Autowired
TripsExpiryTask tripsExpiryTask;
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
tripsExpiryTask.execute();
}
}
但是无法在 TripExpiryJob 中自动装配 TripExpiryTask Class。
已更新:
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();
}
}
要初始化@Autowired 对象,请确保您正在做
<上下文:组件扫描>
在配置文件中。
如果您使用配置 class 而不是 servlet-config.xml 那么您必须执行
@ComponentScan 在 class 级别
检查您正在自动装配的对象是在 xml 文件中创建的。
或自动初始化使用
<上下文:注释配置/>
问题似乎出在 WebAppConfig class 中。我为工作做了一个单独的配置 class,它运行良好。
下面是我定义 bean 的配置 Class。
@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,我在另一个 class(TripExpiryJob)
中自动装配它public class TripsExpiryJob implements Job {
@Autowired
TripsExpiryTask tripsExpiryTask;
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
tripsExpiryTask.execute();
}
}
但是无法在 TripExpiryJob 中自动装配 TripExpiryTask Class。
已更新:
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();
}
}
要初始化@Autowired 对象,请确保您正在做
<上下文:组件扫描>
在配置文件中。
如果您使用配置 class 而不是 servlet-config.xml 那么您必须执行
@ComponentScan 在 class 级别
检查您正在自动装配的对象是在 xml 文件中创建的。
或自动初始化使用
<上下文:注释配置/>
问题似乎出在 WebAppConfig class 中。我为工作做了一个单独的配置 class,它运行良好。