[JAVA] About the official start guide of Spring Framework

Introduction

I tried to learn the Spring Framework, but I took a look at the Official Start Guide, but the number was messed up. Actually, I was thinking of actually doing everything, but I was frustrated, and even the categorization seemed halfway, but I passed the first pass, so I summarized it for a memorial service. The contents are as of June 2018.

Start guide

About the basics of building Spring Boot

https://spring.io/guides/gs/spring-boot/ About the basic contents of building Spring Boot. It is treated in the same line as other start guides, but I think you can read it first.

IDE Spring Tool Suite https://spring.io/guides/gs/sts/ About Spring Tool Suite, an IDE for Spring Framework.

IntelliJ IDEA https://spring.io/guides/gs/intellij-idea/ How to use IntelliJ IDEA. Ultimate Edition seems to work with the Spring Framework, but it's probably paid.

REST API

Create

https://spring.io/guides/gs/rest-service/ How to make an API that returns JSON in HTTP GET request. I haven't touched on the creation of API by POST request, so I need to investigate it separately.

Run

https://spring.io/guides/gs/consuming-rest/ A simple REST API execution method using the RestTemplate class.

Execution of regular tasks

https://spring.io/guides/gs/scheduling-tasks/ How to implement when you want to execute tasks at regular intervals. The sample uses fixedRate (runs tasks at regular intervals regardless of whether the running task has completed), but it also uses fixedDelay (which runs after the running task completes). Wait for a while to execute the next task) and cron.

About building a project

Gradle https://spring.io/guides/gs/gradle/ Build with Gradle. Maven https://spring.io/guides/gs/maven/ Build by Maven.

Creating a WAR file

https://spring.io/guides/gs/convert-jar-to-war/ About creating a WAR file.

Multi-project

https://spring.io/guides/gs/multi-module/ How to build multiple projects.

DB

Connecting to RDB by JDBC

https://spring.io/guides/gs/relational-data-access/ How to connect to RDB using JdbcTemplate class.

Transaction management

https://spring.io/guides/gs/managing-transactions/ As the name implies, DB transaction management.

File upload

https://spring.io/guides/gs/uploading-files/ How to upload a file. There are places where only the interface is displayed as an example, so if you want to move it for the time being, it is better to refer to Official GitHub .. I also use the MockMvcRequestBuilders.fileUpload method in my test code, but it's [not recommended anymore](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/ It looks like web / servlet / request / MockMvcRequestBuilders.html # fileUpload-java.net.URI-), so instead [MockMvcRequestBuilders.multipart](https://docs.spring.io/spring-framework/docs/current /javadoc-api/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.html#multipart-java.net.URI-) It seems good to use the method. I wonder if it hasn't been updated with Anma-chan ...

Security

LDAP authentication

https://spring.io/guides/gs/authenticating-ldap/ About LDAP authentication. It seems that the modified contents of ʻapplication.propertiesare omitted, so [Official GitHub](https://github.com/spring-guides/gs-authenticating-ldap) is helpful for that point. User information is managed in a file for testing, andLdapShaPasswordEncoder` (classes that have already been deprecated for password encoding. Since docs / current / api / org / springframework / security / crypto / password / LdapShaPasswordEncoder.html)) is used, it seems that more research is needed when using it in production.

Page authentication

https://spring.io/guides/gs/securing-web/ I'm creating a page that can only be viewed by users who have been authenticated using Spring Security.

Facebook ** * 2018/08 postscript ** The link below was there, but it was removed from the official Start Guide list. The GitHub sample program also has a project name of deprecated, so I feel that Facebook-related projects cannot be used in the future.

Connect to the application

~~https://spring.io/guides/gs/register-facebook-app/ Connecting to a Facebook application using the FacebookTemplate class. There is a sample on Official GitHub. ~~

Access to data

~~https://spring.io/guides/gs/accessing-facebook/ About accessing Facebook data. In the example, the feed information is obtained, but [as far as the document is viewed](https://docs.spring.io/spring-social-facebook/docs/current/apidocs/org/springframework/social/facebook/api/ Facebook.html) Like, pick up friend information and so on. ~~

Pub/Sub Redis https://spring.io/guides/gs/messaging-redis/ Redis is known as a NoSQL database, but it seems that it can also send and receive messages. The sample summarizes sending and receiving the message.

RabbitMQ https://spring.io/guides/gs/messaging-rabbitmq/ About sending and receiving messages using RabbitMQ.

JMS https://spring.io/guides/gs/messaging-jms/ About sending and receiving messages by JMS.

Google Cloud Pub/Sub https://spring.io/guides/gs/messaging-gcp-pubsub/ About using Google Cloud Pub / Sub. The sample also uses Spring Integration.

Twitter ** * 2018/08 postscript ** The link below was there, but it was removed from the official Start Guide list. The GitHub sample program also has a project name of deprecated, so I feel that Twitter-related projects cannot be used in the future.

Connect to the application

~~https://spring.io/guides/gs/register-twitter-app/ How to connect to the Twitter application ... But I feel that the page is buggy. The link to GitHub isn't working well either. For the time being, the official GitHub is here. ~~

Access to data

~~https://spring.io/guides/gs/accessing-twitter/ About access to Twitter data. As far as the document is viewed Manipulating the timeline and user list I think I can do something. ~~

Neo4j

Access to data

https://spring.io/guides/gs/accessing-data-neo4j/ About data access to the graph database Neo4j.

REST https://spring.io/guides/gs/accessing-neo4j-data-rest/ About access to Neo4j by REST.

Spring Boot Actuator https://spring.io/guides/gs/actuator-service/ Spring Boot has a subproject called Spring Boot Actuator, and health check by incorporating this. It seems that various endpoints such as endpoints will be added.

Batch processing

https://spring.io/guides/gs/batch-processing/ About batch processing in Spring. A series of processes are executed: data acquisition from CSV → conversion of value to uppercase → save value in DB.

HATEOAS https://spring.io/guides/gs/rest-hateoas/ The idea of HATEOAS? About creating a Restful API that incorporates.

Pivotal GemFire

Access to data

https://spring.io/guides/gs/accessing-data-gemfire/ About using Pivotal GemFire, which is an in-memory data grid.

Data cache

https://spring.io/guides/gs/caching-gemfire/ About caching Pivotal GemFire data.

REST https://spring.io/guides/gs/accessing-gemfire-data-rest/ About REST access to Pivotal GemFire.

EIP https://spring.io/guides/gs/integration/ The title of the start guide is "Integrating Data". One of Spring's projects is Spring Integration, which seems to be a framework that follows the concept of EIP (Enterprise Integration Patterns) as far as I can see. It is used to exchange data as messages and integrate it with other applications.

JPA

Access to data

https://spring.io/guides/gs/accessing-data-jpa/ About data access to DB by JPA.

REST https://spring.io/guides/gs/accessing-data-rest/ About DB access by REST + JPA. It seems that it works without creating a controller just by adding a dedicated annotation.

MySQL https://spring.io/guides/gs/accessing-data-mysql/ About data access to MySQL using JPA.

MongoDB

How to Use

https://spring.io/guides/gs/accessing-data-mongodb/ About using MongoDB which is NoSQL.

REST https://spring.io/guides/gs/accessing-mongodb-data-rest/ About access to MongoDB by REST.

Web page

Create

https://spring.io/guides/gs/serving-web-content/ About creating web pages with the Spring framework.

Form input validation

https://spring.io/guides/gs/validating-form-input/ As the title suggests, about validation of form input.

Form submission

https://spring.io/guides/gs/handling-form-submission/ About form submission.

Execution of asynchronous processing

https://spring.io/guides/gs/async-method/ About execution of processing by multithread.

WebSocket https://spring.io/guides/gs/messaging-stomp-websocket/ About using WebSocket.

AngularJS https://spring.io/guides/gs/consuming-rest-angularjs/ When using AngularJS.

rest.js https://spring.io/guides/gs/consuming-rest-restjs/ About using rest.js. Or rather, I couldn't figure out what rest.js was when I searched for it, but I wonder if it's a major one.

jQuery https://spring.io/guides/gs/consuming-rest-jquery/ About using jQuery.

CORS https://spring.io/guides/gs/rest-service-cors/ About correspondence to CORS.

YARN

Build with Gradle

https://spring.io/guides/gs/gradle-yarn/ About build using YARN (Gradle).

Build with maven

https://spring.io/guides/gs/maven-yarn/ About build using YARN (Maven).

Creating an application

https://spring.io/guides/gs/yarn-basic-single/ About creating a simple application using YARN.

Creating an application (multi-project)

https://spring.io/guides/gs/yarn-basic/ About creating a simple application using YARN. About 3 JARs are created by linking with Hadoop while saying that it is simple.

test

https://spring.io/guides/gs/yarn-testing/ About testing for applications using YARN.

Batch processing

https://spring.io/guides/gs/yarn-batch-processing/ About batch processing in applications using YARN.

Re-execution of batch processing

https://spring.io/guides/gs/yarn-batch-restart/ How to restart batch processing from where the application using YARN failed.

SOAP

Use of web services

https://spring.io/guides/gs/consuming-web-service/ How to use SOAP-based Web services.

Creating a web service

https://spring.io/guides/gs/producing-web-service/ Here's how to create a SOAP-based web service.

cache

https://spring.io/guides/gs/caching/ About data caching. It seems that you can get the execution result of the method etc. from the cache.

Cloud Foundry https://spring.io/guides/gs/sts-cloud-foundry-deployment/ How to deploy an application to Cloud Foundry, which is one of PaaS, using STS.

HashiCorp Vault

Setting method

https://spring.io/guides/gs/vault-config/ There seems to be an application for managing confidential information called HashiCorp Vault, and the setting method for using it from Spring is described.

Data access

https://spring.io/guides/gs/accessing-vault/ About data access in the above HashiCorp Vault.

WebFlux https://spring.io/guides/gs/reactive-rest-service/ With the new function from Version 5, it seems that it is possible to create non-blocking applications unlike the past by reactive programming. If you don't know the meaning of the word, you won't know what it is, but the point is that you can execute efficient processing with fewer threads. There was RestTemplate in the execution of REST API so far, but a class called WebClient has been added from Version 5 for communication with non-blocking applications, and how to use it is also described.

Azure https://spring.io/guides/gs/spring-boot-for-azure/ How to deploy a Spring application to Microsoft Azure.

Load balancer

https://spring.io/guides/gs/client-side-load-balancing/ About an example using a client-side load balancer called Netflix Ribbon. [See below](/ nulltemp / items / 22655c8dde1fe23c1297 # Service Discovery) seems to be used in conjunction with Netflix Eureka.

routing

Zuul https://spring.io/guides/gs/routing-and-filtering/ About request routing & filtering using a library called Netflix Zuul.

Spring Cloud Gateway https://spring.io/guides/gs/gateway/ Routing requests using Spring Cloud Gateway. The sample shows an example of using a library called Hystrix developed by Netflix (it seems that it will deal with a failure in the connected service). To be honest, I don't really understand the purpose of the library, but it seems that it is often compared with Zuul, so it's probably in the same category. At the time of Zuul 1, the blocking API does not support WebSocket etc., but since Spring Cloud Gateway is a non-blocking API, it also supports WebSocket ... It seems that it was a strength / 47092048 / how-spring-cloud-gateway-is-different-from-zuul), but Zuul 2 seems to be a non-blocking API, so I wonder if it differentiates in other ways.

Service discovery

https://spring.io/guides/gs/service-registration-and-discovery/ About the use of Netflix Eureka, which is service discovery (it seems to be middleware that registers the created service and searches it as needed).

API documentation

https://spring.io/guides/gs/testing-restdocs/ About creating API documentation using Spring REST Docs.

test

Consumer Driven Contract https://spring.io/guides/gs/contract-rest/ Consumer driven contract? about. It seems to be the idea of testing in microservices. There is a subproject called Spring Cloud Contract, which is an example.

Web layer testing

https://spring.io/guides/gs/testing-web/ About the basics of Spring Framework testing. From a simple test to see if the server can be started, we are testing the operation of the API without starting the server.

Circuit Breaker https://spring.io/guides/gs/circuit-breaker/ About Netflix Hystrix that appeared in [Spring Cloud Gateway sample](/ nulltemp / items / 22655c8dde1fe23c1297 # spring-cloud-gateway). A mechanism to stop the impact on other related services when the related service is stopped.

Vaadin https://spring.io/guides/gs/crud-with-vaadin/ About Vaadin, a UI framework that uses Java. In the sample, JPA is also used to create a UI that allows DB operations.

Redis https://spring.io/guides/gs/spring-data-reactive-redis/ There was also [Example when using Redis](/ nulltemp / items / 22655c8dde1fe23c1297 # redis) in Pub / Sub, but here is a sample when you get it by plunging the value normally.

Manage settings

https://spring.io/guides/gs/centralized-configuration/ By launching Config Server and referencing it from the client server, the same settings can be dynamically applied to multiple client servers ... I think.

Docker https://spring.io/guides/gs/spring-boot-docker/ About cooperation with Docker that everyone loves.

in conclusion

Recommended Posts

About the official start guide of Spring Framework
About the initial display of Spring Framework
1. Start Spring framework from 1
About DI of Spring ①
About DI of Spring ②
The official name of Spring MVC is Spring Web MVC
A review note of the Spring Framework Resource interface
A record of studying the Spring Framework from scratch
About the handling of Null
[Personal memo] About Spring framework
About Spring Framework context error
About the description of Docker-compose.yml
About the function of Spring Boot due to different versions
About the behavior of ruby Hash # ==
Spring Framework 5.0 Summary of major changes
About the basics of Android development
About binding of Spring AOP Annotation
Official logo list of the service
About the role of the initialize method
Think about the 7 rules of Optional
Filter the result of BindingResult [Spring]
Summary about the introduction of Device
About the log level of java.util.logging.Logger
About the version of Docker's Node.js image
Guess about the 2017 Java Persistence Framework (3) Reladomo
What is testing? ・ About the importance of testing
Understand the official sample Coffee of Dagger2
About Spring ③
About the operation of next () and nextLine ()
About the error message Invalid redeclaration of'***'
Features of spring framework for java developers
About the treatment of BigDecimal (with reflection)
About the number of threads of Completable Future
About the mechanism of the Web and HTTP
[Java] [Spring] Test the behavior of the logger
Think about the combination of Servlet and Ajax
Zeller's official (asking for the day of the week)
Summary of what I learned about Spring Boot
About the description order of Java system properties
About the idea of anonymous classes in Java
[Laravel] Command memorandum until the start of the project
The story of raising Spring Boot 1.5 series to 2.1 series
Let's check the feel of Spring Boot + Swagger 2.0
Various correspondence table of Spring Framework and Spring Boot
Transaction management of the integrated framework "Apache Camel"
About next () and nextLine () of the Scanner class
About Spring AOP
About the method
About spring AOP
About the package
Specify the encoding of static resources in Spring Boot
[For beginners] DI ~ The basics of DI and DI in Spring ~
[Grails] About the setting area and the setting items of application.yml
About the usefulness of monads from an object-oriented perspective
Talking about the merits of database bind variables ((1) Introduction)
Access the built-in h2db of spring boot with jdbcTemplate
05. I tried to stub the source of Spring Boot
About the problem of deadlock in parallel processing in gem'sprockets' 4.0
I tried to reduce the capacity of Spring Boot
Until the use of Spring Data and JPA Part 2
Read the Rails Guide (Overview of Action Controller) again