Настройка Spring MVC с Kotlin

Spring MVC Настройка с Kotlin

1. обзор

В этом кратком руководстве мы рассмотрим, что нужно для создания простого проекта Spring MVC с языком Kotlin.

2. специалист

Для конфигурации Maven нам нужно добавить следующиеKotlin dependencies:


    org.jetbrains.kotlin
    kotlin-stdlib-jre8
    1.1.4

Нам также нужно добавить следующиеSpring dependencies:


    org.springframework
    spring-web
    4.3.10.RELEASE


    org.springframework
    spring-webmvc
    4.3.10.RELEASE

Чтобы скомпилировать наш код, нам нужно указать наш исходный каталог и настроитьKotlin Maven Plugin в разделе сборки нашегоpom.xml:


    kotlin-maven-plugin
    org.jetbrains.kotlin
    1.1.4
    
        
            compile
            compile
            
                compile
            
        
        
            test-compile
            test-compile
            
                test-compile
            
        
    

3. Конфигурация Spring MVC

Мы можем использовать либо конфигурацию аннотации Kotlin, либо конфигурацию XML.

3.1. Конфигурация Kotlin

Конфигурация аннотации довольно проста. Мы настраиваем контроллеры представления, распознаватель шаблонов и механизм шаблонов. После этого мы можем использовать их для настройки распознавателя вида:

@EnableWebMvc
@Configuration
open class ApplicationWebConfig : WebMvcConfigurerAdapter(),
  ApplicationContextAware {

    private var applicationContext: ApplicationContext? = null

    override fun setApplicationContext(applicationContext:
      ApplicationContext?) {
        this.applicationContext = applicationContext
    }

    override fun addViewControllers(registry:
      ViewControllerRegistry?) {
        super.addViewControllers(registry)

        registry!!.addViewController("/welcome.html")
    }
    @Bean
    open fun templateResolver(): SpringResourceTemplateResolver {
        return SpringResourceTemplateResolver()
          .apply { prefix = "/WEB-INF/view/" }
          .apply { suffix = ".html"}
          .apply { templateMode = TemplateMode.HTML }
          .apply { setApplicationContext(applicationContext) }
    }

    @Bean
    open fun templateEngine(): SpringTemplateEngine {
        return SpringTemplateEngine()
          .apply { setTemplateResolver(templateResolver()) }
    }

    @Bean
    open fun viewResolver(): ThymeleafViewResolver {
        return ThymeleafViewResolver()
          .apply { templateEngine = templateEngine() }
          .apply { order = 1 }
    }
}

Затем давайте создадим классServletInitializer. Класс должен расширятьAbstractAnnotationConfigDispatcherServletInitializer. Это замена традиционной конфигурацииweb.xml:

class ApplicationWebInitializer:
  AbstractAnnotationConfigDispatcherServletInitializer() {

    override fun getRootConfigClasses(): Array>? {
        return null
    }

    override fun getServletMappings(): Array {
        return arrayOf("/")
    }

    override fun getServletConfigClasses(): Array> {
        return arrayOf(ApplicationWebConfig::class.java)
    }
}

3.2. Конфигурация XML

XML-эквивалент классаApplicationWebConfig:


    

    

    

    
        
        
        
    

    
        
    


    
        
        
    

В этом случае мы также должны указать конфигурациюweb.xml:



    Spring Kotlin MVC Application

    
        spring-web-mvc
        
            org.springframework.web.servlet.DispatcherServlet
        
        1
        
            contextConfigLocation
            /WEB-INF/spring-web-config.xml
        
    

    
        spring-web-mvc
        /
    

4. Представления HTML

Соответствующий ресурс html находится в каталоге/WEB-INF/view. В приведенной выше конфигурации контроллера представления мы определили базовый контроллер представления,welcome.html. Содержание соответствующего ресурса:


    Welcome

    
        

Body of the welcome view

5. Заключение

После запуска проекта мы можем получить доступ к настроенной странице приветствия вhttp://localhost:8080/welcome.html.

В этой статье мы настроили простой проект Spring MVC с использованием конфигурации Kotlin и XML.

Доступен полный исходный кодover on GitHub.