Весна с трикотажных рамок REST - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть класс, как показано ниже:

@Path("/myrequest")
@Scope("request")
@Component
public class MyRESTCode implements IServicedResource<T> {   
@Inject
private IMyService serviceImpl;

@Override
public void setServiceImpl(IMyService impl) {
    serviceImpl = impl;
}
}

@Path("/users")
@POST
@Consumes ({MediaType.APPLICATION_JSON})
@Produces ({MediaType.APPLICATION_JSON})
public Response mymethod(Object obj) throws Exception {
       serviceImpl.callme(obj);
       return Response.noContent().build();
}

Теперь эта реализация метода callme существует в каком-то другом классе (MyOtherClass.java).

Может ли кто-нибудь рассказать мне, как mymethod вызывает метод callme в MyOtherClass.java, когда выполняется / POST-запрос / users ???

Также, кто вызывает метод setServiceImpl и как он получает set &когда он вызывается?

Спасибо!

1 Ответ

0 голосов
/ 15 февраля 2012

У вас должен быть весенний applicationContext.xml, который должен выглядеть примерно так:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">

       <context:component-scan base-package="test.example"/>
       <context:annotation-config/>

</beans>

В этом xml, если вы заметили, что base-package должен быть определен как пакет, в котором должен присутствовать ваш класс контроллера (в вашем случае MyRESTCode.java). Spring выполнит поиск классов, помеченных как @Component, и настроит их по пути, указанному в @ Path

Когда вы отправляете запрос post с JSON в теле к URL .... / myrequest / users, вызывается метод callme, который, в свою очередь, вызывает ваш сервисный метод.

@ Аннотация Inject сообщает Spring, что зависимость IMyService должна быть внедрена в переменную serviceImpl через метод setServiceImpl.

Надеюсь, это поможет.

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