2012-06-30 2 views
0

Из того, что я видел, многие люди предпочитают ставить «бизнес-логику» в отдельный проект модуля. Как это делается с приложением Spring 3?Spring 3 - Как отделить бизнес-уровень от уровня приложения (услуги)?

Из того, что я видел, контроллеры и службы довольно специфичны для весны. Это точка? Если я решил пойти с весной, нет ли смысла отделять «логику» и просто создавать сервисы напрямую (которые взаимодействуют с потоком весеннего Интернета, дао и т. Д.)?

Я собираюсь создать API, используя веб-службы RESTful позже, также через Spring. Может ли это быть сделано в ОДНОМ приложении, или, как я уже упоминал, есть ли какой-то способ разделить логику?

Например - логин - все обрабатываются с помощью пружинной системы безопасности и пружинного ленточного потока и ... вы догадались ... весна. Сложно это сделать для модуляции.

Однако скажите, что у меня есть служба, которая генерирует данные в формате PDF, данные о клиентах .... было бы что-то, что я должен отделить?

Спасибо!

+0

Nvm - отправил это на неправильный вопрос (извините!) –

ответ

1

Как правило, весна DispatcherServlet несет ответственность за службу REST. Контекст веб-приложения содержит контроллеры, разрешения представления, сопоставление обработчиков и т. Д.

Логика приложения, которая не является частью сети, то есть сервисы, репозитории, источники данных и т. Д., Обычно помещается в один (или более) корень контекст приложения. Он импортируется в приложение, зарегистрировав ContextLoaderListener в файле web.xml и затем соответствующим образом настройте contextConfigLocation. Если вы используете Spring security, здесь добавляется контекст приложения безопасности.

Пример:

<web-app ...> 
    <!-- Enables Spring root application context--> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- One (or more) root application contexts --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/rootApplicationContext.xml</param-value> 
    </context-param> 

    <!-- Servlet declaration. Each servlet has is its own web application context --> 
    <servlet> 
     <servlet-name>example</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>example</servlet-name> 
     <url-pattern>/example/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Эта настройка позволяет контекст веб-приложения, чтобы наследовать бобы, которые заявлены в контексте (ы) корня приложения.

Примечание по соглашению, контекст веба-приложение, которое используется для конкретного сервлета находится в /WEB-INF/[servlet-name]-servlet.xml, т.е. /WEB-INF/пример-сервлете .xml для примера выше.

+0

Спасибо за ваш ответ - однако у меня возникли проблемы с пониманием того, что вы говорите. Можете ли вы подробнее рассказать? Я новичок в этом, и могу откусывать больше, чем я могу пережевывать. Тем не менее, я хочу, чтобы мое приложение было модульным и структурированным с использованием передового подхода с Maven. Что такое «боб»? EJB или весенний боб? –

+0

Я имею в виду весенние бобы. В принципе, Spring bean - это объект Java, чей жизненный цикл обрабатывается Spring. Бобы объявляются в xml-файле (x) файла контекста приложения (или в файлах конфигурации на основе Java). Spring обрабатывает весь жизненный цикл компонентов, таких как инстанцирование, инъекция зависимостей, обратные вызовы жизненного цикла и т. Д. – matsev

Смежные вопросы