Я использую конфигурацию на основе аннотаций - вообще без XML.
Я все настроил, но не могу понять, почему OrderService
не подключается автоматически и продолжает оставаться null
. Класс ниже в самом низу — это тот, который показывает реальную проблему. Все остальные классы — это моя конфигурация.
У меня есть log4j
в этом приложении, но я неопытен в этом. Есть ли способ зарегистрировать, какие пакеты/классы сканируются, чтобы определить, почему это не работает?
Служба заказов
@Service
public class OrderService extends GenericService<OrderDAO, Order> {
@Autowired
OrderDAO dao;
}
Конфигурация служб
@Configuration
public class Config {
@Bean
public OrderService orderService() {
return new OrderService();
}
}
Основная конфигурация
@Configuration
@ComponentScan(basePackages = {
"com.production.api",
//todo: may not need the rest of these
"com.production.api.dao",
"com.production.api.models",
"com.production.api.requests",
"com.production.api.requests.job",
"com.production.api.resources",
"com.production.api.resources.job",
"com.production.api.services"
})
@Import({
com.production.api.services.Config.class,
com.production.api.dao.Config.class
})
@PropertySource(value= "classpath:/META-INF/application.properties")
@EnableTransactionManagement
public class Config {
Main.java
public static void main(String[] args) throws IOException {
//process annotation configuration
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
HttpServer httpServer = startServer();
System.out.println(String.format("Jersey app started with WADL available at " + "%sapplication.wadl\nTry out %shelloworld\nHit enter to stop it...", BASE_URI, BASE_URI));
System.in.read();
httpServer.stop();
}
В чем проблема...
@Component
public class NewJobRequestHandler {
public static Logger logger = Logger.getLogger(Logger.class.getName());
//@todo Why isn't this autowiring?
@Autowired
OrderService orderService;
public void instantiateOrderService() {
//@todo remove this manual wiring
orderService = (OrderService) ApplicationContextProvider.getApplicationContext().getBean("orderService");
}
public AuthenticatedApiResponse getResponse(AuthenticatedRequest<NewJobRequest> request) {
instantiateOrderService();
OrderService
иNewJobRequestHandler
находятся в пакетах в вашем@ComponentScan
? Кроме того, вам не нужен@Bean
для@OrderService
.@Service
уже идентифицирует его как компонент. - person Sotirios Delimanolis   schedule 28.02.2013@ComponentScan
. Вы говорите, что мне не нужен файл конфигурации служб, потому что он помечен как@Service
и сканируется? - person Webnet   schedule 28.02.2013