Рубрики
Без рубрики

Gradle – Spring 4 MVC Пример Hello World – Аннотация

– Грейфер–Пружина 4 MVC Пример Hello World – Аннотация

Автор оригинала: mkyong.

В этом уроке мы возьмем предыдущий пример Gradle +Spring MVC XML , перепишем его для поддержки конфигурации аннотаций @JavaConfig, больше никаких XML-файлов.

P.S Этот пример будет работать только в контейнере Servlet 3.0+, таком как Tomcat 7 или Jetty 9.

Используемые технологии:

  1. Ступень 2.0
  2. Пружина 4.1.6. ВЫПУСК
  3. Кот 7 или пристань 9
  4. Затмение 4.4
  5. JDK 1.7
  6. Обратный вход 1.1.3
  7. Начальная загрузка 3

1. Структура проекта

Загрузите исходный код проекта и просмотрите структуру папок проекта:

P.S Больше никаких XML-файлов, таких как Больше никаких XML-файлов, таких как или файлы конфигурации Spring XML.

2. Сортировка

2.1 Просмотрите файл build.gradle , это должно быть понятно само собой.

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'
//apply plugin: 'jetty' //too old, Jetty 6, use gretty plugin
apply plugin: 'org.akhikhl.gretty'

// JDK 7
sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'ch.qos.logback:logback-classic:1.1.3'
    compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
    compile 'javax.servlet:jstl:1.2'
	
    //include in compile only, exclude in the war
    providedCompile 'javax.servlet:servlet-api:2.5'
}

//Gretty Embedded Jetty
buildscript {
  repositories {
    jcenter()
  }

  dependencies {
    classpath 'org.akhikhl.gretty:gretty:+'
  }
}

// Don't use Jetty8, even it's a servlet 3.0+ container, 
// but not support non-jar WebApplicationInitializer scanning.
// It will cause "No Spring WebApplicationInitializer types detected on classpath"
gretty {
  port = 8080
  contextPath = 'spring4'
  servletContainer = 'jetty9' //tomcat7 or tomcat8
}

//For Eclipse IDE only
eclipse {

  wtp {
    component {
      
      //define context path, default to project folder name
      contextPath = 'spring4'
      
    }
    
  }
}

2.2 Сделайте так, чтобы этот проект поддерживал среду разработки Eclipse. Теперь вы можете импортировать проект в среду разработки Eclipse.

your-project$ gradle eclipse

3. Пружина @Конфигурация

Конфигурация Spring @ и ее XML-эквивалент.

3.1 Конфигурация аннотации Spring для сканирования классов услуг.

package com.mkyong.helloworld.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan({ "com.mkyong.helloworld.service" })
public class SpringRootConfig {
}

Эквивалент XML.


 
	


3.2 Расширяет абстрактный класс webmvcконфигурационный адаптер .

package com.mkyong.helloworld.config;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
 
@EnableWebMvc //
@Configuration
@ComponentScan({ "com.mkyong.helloworld.web" })
public class SpringWebConfig extends WebMvcConfigurerAdapter {
 
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**")
                        .addResourceLocations("/resources/");
	}
	
	@Bean
	public InternalResourceViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver 
                         = new InternalResourceViewResolver();
		viewResolver.setViewClass(JstlView.class);
		viewResolver.setPrefix("/WEB-INF/views/jsp/");
		viewResolver.setSuffix(".jsp");
		return viewResolver;
	}
 
}

Эквивалент XML.


 
	
 
	
		
		
		
	
 
	
	 
	
 

4. Контейнер сервлета 3.0+

Создайте класс ServletInitializer , контейнер Servlet 3.0+ подберет этот класс и запустит его автоматически. Это класс замены для web.xml

package com.mkyong.helloworld.servlet3;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

import com.mkyong.helloworld.config.SpringRootConfig;
import com.mkyong.helloworld.config.SpringWebConfig;

public class MyWebInitializer extends
		AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class[] getRootConfigClasses() {
		return new Class[] { SpringRootConfig.class };
	}

	@Override
	protected Class[] getServletConfigClasses() {
		return new Class[] { SpringWebConfig.class };
	}

	@Override
	protected String[] getServletMappings() {
		return new String[] { "/" };
	}

}

Эквивалент XML.



	Gradle + Spring MVC Hello World
	Spring MVC web application

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

	
		hello-dispatcher
		/
	

	
	
		
			org.springframework.web.context.ContextLoaderListener
		
	

	
		contextConfigLocation
		/WEB-INF/spring-core-config.xml
	


5. Демонстрация

5.1 Для запуска этого проекта. Проблемы gradle jettyRun для запуска встроенного контейнера для причала.

your-project$ gradle jettyRun

21:56:34 INFO  Jetty 9.2.10.v20150310 started and listening on port 8080
21:56:34 INFO  spring4 runs at:
21:56:34 INFO    http://localhost:8080/spring4
Press any key to stop the server.
> Building 87% > :jettyRun

5.2. http://localhost:8080/spring4/

5.3. http://localhost:8080/spring4/hello/mkyong.com

Скачать Исходный Код

Рекомендации

  1. Википедия – сервлет Java
  2. Ссылки на Spring Web MVC
  3. Градация – EclipseWtp
  4. Плагин Gradle –Eclipse
  5. Плагин Gradle–Причал
  6. Сортировка – Плагин Gretty
  7. Сортировка – Песчаная конфигурация

Оригинал: “https://mkyong.com/spring-mvc/gradle-spring-4-mvc-hello-world-example-annotation/”