Как добавить конфигурацию контекста / bean-компонента в JAXRSServerFactoryBean - PullRequest
0 голосов
/ 09 октября 2018

Я включил свой cxf в Spring, однако моя служба cxf REST не может автоматически подключить мой DAO.Пожалуйста, помогите!

Служба REST cxf запускается:

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(CustomerService.class);
sf.setAddress("http://localhost:9000/");
sf.create();

В serviceImpl.java

@Autowired 
SomeDAO someDAO; 

public void getSomething() {
    someDAO.get(); // get NullPointerException
}

В Appconfig.java

@Bean
someBean someBean(){
  return new someBeanImpl();
}

Думаю, проблема в том, что контекст Appconfig.java не регистрируется JAXRSServerFactoryBean.Так, как я могу добавить это?

1 Ответ

0 голосов
/ 16 октября 2018

Я исправил эту проблему, просто опубликуйте свое решение здесь, чтобы помочь другим.

не используйте "setResourceClasses (CustomerService.class);"когда вы используете cxf, добавленный весной !!!если класс ресурсов используется таким образом, служебный компонент должен быть создан из контекста Spring.Итак, запустите сервер, следуйте этому:

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(config.class);
ctx.refresh()

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(ctx.getBean(CustomerService.class));    
// use service interafce if you have both implementation class and interface
// but make sure don't create/new a service class
// which is actually created out of your spring context
// therefore in that service, the @Autowired is not working

sf.setAddress("http://localhost:9000/");
sf.create();

Надеюсь, это поможет другим!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...