Skip to content

Commit 00d6f51

Browse files
authored
Update spring.md
1 parent e87441e commit 00d6f51

1 file changed

Lines changed: 6 additions & 54 deletions

File tree

spring.md

Lines changed: 6 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,6 @@ Dispatcher-servlet-diagram
229229
@Service указывает, что класс является сервисом для реализации бизнес логики (на самом деле не отличается от Component, но просто помогает разработчику указать смысловую нагрузку класса).
230230

231231
Для указания контейнеру на класс-бин можно использовать любую из этих аннотаций. Но различные имена позволяют различать назначение того или иного класса.
232-
233232
### 22. Расскажите, что вы знаете о DispatcherServlet и ContextLoaderListener.
234233
DispatcherServlet – сервлет диспетчера. Этот сервлет анализирует запросы и направляет их соответствующему контроллеру для обработки. В Spring MVC класс DispatcherServlet является центральным сервлетом, который получает запросы и направляет их соответствующим контроллерам. В приложении Spring MVC может существовать произвольное количество экземпляров DispatcherServlet, предназначенных для разных целей (например, для обработки запросов пользовательского интерфейса, запросов веб-служб REST и т.д.). Каждый экземпляр DispatcherServlet имеет собственную конфигурацию WebApplicationContext, которая определяет характеристики уровня сервлета, такие как контроллеры, поддерживающие сервлет, отображение обработчиков, распознавание представлений, интернационализация, оформление темами, проверка достоверности, преобразование типов и форматирование и т.п.
235234

@@ -252,6 +251,7 @@ ContextLoaderListener – слушатель при старте и заверш
252251
<listener>
253252
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
254253
</listener>
254+
255255
### 23. Что такое ViewResolver в Spring?
256256
ViewResolver – распознаватель представлений. Интерфейс ViewResolver в Spring MVC (из пакета org.springframework.web.servlet) поддерживает распознавание представлений на основе логического имени, возвращаемого контроллером. Для поддержки различных механизмов распознавания представлений предусмотрено множество классов реализации. Например, класс UrlBasedViewResolver поддерживает прямое преобразование логических имен в URL. Класс ContentNegotiatingViewResolver поддерживает динамическое распознавание представлений в зависимости от типа медиа, поддерживаемого клиентом (XML, PDF, JSON и т.д.). Существует также несколько реализаций для интеграции с различными технологиями представлений, такими как FreeMarker (FreeMarkerViewResolver), Velocity (VelocityViewResolver) и JasperReports (JasperReportsViewResolver).
257257

@@ -263,35 +263,21 @@ ViewResolver – распознаватель представлений. Инт
263263
<property name="suffix" value=".jsp" />
264264
</bean>
265265

266-
<!-- Resolves views selected for rendering by @Controllers to .jsp resources
267-
in the /WEB-INF/views directory -->
268-
<bean
269-
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
270-
<property name="prefix" value="/WEB-INF/views/" />
271-
<property name="suffix" value=".jsp" />
272-
</bean>
266+
273267
InternalResourceViewResolver – реализация ViewResolver, которая позволяет находить представления, которые возвращает контроллер для последующего перехода к нему. Ищет по заданному пути, префиксу, суффиксу и имени.
274268

275269
Дополнительная информация – Spring MVC — описание интерфейса ViewResolver.
276270

277271
### 24. Что такое MultipartResolver и когда его использовать?
278272
Интерфейс MultipartResolver используется для загрузки файлов. Существуют две реализации: CommonsMultipartResolver и StandardServletMultipartResolver, которые позволяют фреймворку загружать файлы. По умолчанию этот интерфейс не включается в приложении и необходимо указывать его в файле конфигурации. После настройки любой запрос о загрузке будет отправляться этому интерфейсу.
279273

280-
<beans:bean id="multipartResolver"
281-
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
274+
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
282275

283-
<!-- setting maximum upload size -->
276+
<!-- setting maximum upload size -->
284277
<beans:property name="maxUploadSize" value="100000" />
285278

286279
</beans:bean>
287280

288-
<beans:bean id="multipartResolver"
289-
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
290-
291-
<!-- setting maximum upload size -->
292-
<beans:property name="maxUploadSize" value="100000" />
293-
294-
</beans:bean>
295281
Пример – Spring MVC — загрузка файла
296282

297283
### 25. Как обрабатывать исключения в Spring MVC Framework?
@@ -563,40 +549,8 @@ spring.xml:
563549

564550
</beans>
565551

566-
<?xml version="1.0" encoding="UTF-8"?>
567-
<beans xmlns="http://www.springframework.org/schema/beans"
568-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
569-
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
570-
571-
<bean id="employeeDAO" class="com.journaldev.spring.jdbc.dao.EmployeeDAOImpl">
572-
<property name="dataSource" ref="dataSource" />
573-
</bean>
574-
575-
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
576-
577-
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
578-
<property name="url" value="jdbc:mysql://localhost:3306/TestDB" />
579-
<property name="username" value="pankaj" />
580-
<property name="password" value="pankaj123" />
581-
</bean>
582-
583-
</beans>
584552
Пример использования JdbcTemplate:
585553

586-
@Override
587-
public void save(Employee employee) {
588-
String query = "insert into Employee (id, name, role) values (?,?,?)";
589-
590-
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
591-
592-
Object[] args = new Object[] {employee.getId(), employee.getName(), employee.getRole()};
593-
594-
int out = jdbcTemplate.update(query, args);
595-
596-
if(out !=0){
597-
System.out.println("Employee saved with id="+employee.getId());
598-
}else System.out.println("Employee save failed with id="+employee.getId());
599-
}
600554

601555
@Override
602556
public void save(Employee employee) {
@@ -612,17 +566,15 @@ spring.xml:
612566
System.out.println("Employee saved with id="+employee.getId());
613567
}else System.out.println("Employee save failed with id="+employee.getId());
614568
}
569+
615570
### 38. Как использовать Tomcat JNDI DataSource в веб-приложении Spring?
616571
Для использования контейнера сервлетов настроенного на использование JNDI DataSource, необходимо задать соответствующее свойство в файле конфигурации и затем внедрять его как зависимость. Далее мы можем использовать объект JdbcTemplate для выполнения операций с базами данных.
617572

618573
<beans:bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
619574
<beans:property name="jndiName" value="java:comp/env/jdbc/MyLocalDB"/>
620575
</beans:bean>
621576

622-
<beans:bean id="dbDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
623-
<beans:property name="jndiName" value="java:comp/env/jdbc/MyLocalDB"/>
624-
</beans:bean>
625-
39. Каким образом можно управлять транзакциями в Spring?
577+
### 39. Каким образом можно управлять транзакциями в Spring?
626578
Транзакциями в Spring управляют с помощью Declarative Transaction Management (программное управление). Используется аннотация @Transactional для описания необходимости управления транзакцией. В файле конфигурации нужно добавить настройку transactionManager для DataSource.
627579

628580
<bean id="transactionManager"

0 commit comments

Comments
 (0)