Как перейти от xml-файлов к программной конфигурации

#java #spring #spring-boot

Вопрос:

У меня есть этот класс, с которого начинается приложение:

 @SpringBootApplication
public class MainCore extends SpringBootServletInitializer{

    public static void main(String[] args){
        SpringApplication.run(MainCore.class, args);
    }

}
 

И эти два XML-файла:

web.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         id="WebApp_ID"
         version="4.0">

    <display-name>Fooname</display-name>

    <servlet>
        <servlet-name>fooname</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>fooname</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>

</web-app>
 

fooname-servlet.xml:

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <mvc:annotation-driven />
    <context:component-scan
            base-package="com.web.fooname.controller" />
    <mvc:default-servlet-handler />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <mvc:resources mapping="/resources/**" location="/resources/" />

</beans>
 

И я хочу удалить эти 2 файла и преобразовать их в код.

Кто-нибудь может мне в этом помочь? Я знаю, что это не является целью переполнения стека, но я прочитал много учебных пособий, но не понимаю их.

Комментарии:

1. Удалить web.xml. Поместите свой @SpringBootApplication аннотированный класс в com.web.fooname (вам все еще нужен правильный configure метод, если вы планируете развернуть его как войну, кстати. Добавьте spring.mvc.view.suffix=.jsp и spring.mvc.view.prefix=/WEB-INF/jsp/ в свой application.properties файл. Удалите свое fooname-servlet.xml и запустите приложение.

2. @M. Дейнум, я разворачиваюсь как на ВОЙНЕ. Только этих 3 вещей достаточно? И как остаться с отображением ресурсов?

3. И правильный configure метод, иначе он не запустится. Если вам действительно нужно дополнительное сопоставление (не уверен, что это уже по умолчанию, как я забыл :s). Вы можете добавить класс, который реализует WebMvcConfigurer и реализует addResourceHandler метод для регистрации этого сопоставления.

4. Наконец-то я понял это. Спасибо.