Search
Write a publication
Pull to refresh

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 находит соответствующую запросу функцию, вызывает её и возвращает результат браузеру.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.