Как стать автором
Обновить

SPRING 1. «Hello world!»

Создадим самую простую программу на Spring

Скачать исходники можно отсюда: https://github.com/OldAl67/Samples.Sample1.
Команда: git clone https://github.com/OldAl67/Samples.Sample1.

Для начала соберем и запустим приложение из проекта Sample1:

Последние две строки в консоли будут примерно такими:

Tomcat started on port(s): 8080 (http) with context path ''
Started Application in 4.463 seconds (JVM running for 5.247)

Они сообщают нам что приложение стартовало под управлением сервера Tomcat

После старта приложения откроем браузер и перейдем по ссылке:
Ctrl-КЛИК: http://localhost:8080/say/hello.
Результат:

Рассмотрим подробнее проект.
Проект содержит три файла:

  1. pom.xml – файл проекта.

  2. Application.java – класс с которого начинается выполнение приложения.

  3. HelloWorldController.java – класс, который возвращает html-страницу с приветствием “Hello World!”.

Файл проекта.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project
	xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
	<modelVersion>4.0.0</modelVersion>
	<groupId>ru.samples</groupId>
	<artifactId>sample1</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>jar</packaging>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.2.RELEASE</version>
	</parent>	
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

Существенные теги

  • parent: spring-boot-starter-parent – управляет версиями зависимостей, подключаемых к проекту.

  • dependencies.dependency: spring-boot-starter-web – подключает все зависимости, необходимые для разработки web-приложений. В том числе и сервер Tomcat.

  • build.plugins.plugin: spring-boot-maven-plugin – плагин, собирающий Spring-boot приложение.

Класс приложения Application

С этого класса начинается исполнение Spring-boot приложения:

package ru.samples.sample1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

При запуске вызывается функция main этого класса. В свою очередь функция main запускает приложение Spring и передает ему ссылку на свой класс:

SpringApplication.run(Application.class, args);

С этого момента начинается построение контекста приложения (ApplicationContext).
Пакет, в котором находится класс Application считается корневым. Spring сканирует все классы и пакеты, находящиеся в корневом пакете и находит классы, помеченные как компоненты Spring. Для таких классов создаются объекты и помещаются в контекст приложения.
После того как все компоненты помещены в контекст, запускается сервлет под управлением Tomcat, который реализует отображение запросов на соответствующие функции компонент.

Класс HelloWorldController

Одним из классов – компонентов Spring в нашем примере является класс HelloWorldController:
package ru.samples.sample1.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("say")
public class HelloWorldController {
	@GetMapping(value = "hello",produces= "text/html")
	public String sayHello () {
		return 
"<!DOCTYPE html>"+
"<html>"+
"	<head><title>Hello world!</title></head>"+
"	<body>Hello world!</body>"+
"</html>"
			;
	}
} 

На то, что этот класс является компонентой Spring, указывает аннотация @RestController.
Spring обнаруживает эту аннотацию, создает экземпляр этого класса и помещает его в контекст приложения. При этом URI “say/hello” отображается на функцию sayHello.
Получив запрос от браузера, сервлет Spring находит соответствующую запросу функцию, вызывает её и возвращает результат браузеру.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.