【Spring】SpringBoot官方笔记4Web¶
Most web applications use the spring-boot-starter-web
module to get
up and running quickly. You can also choose to build reactive web
applications by using the spring-boot-starter-webflux
module.
Servlet Web Applications¶
Spring Web MVC Framework
import java.util.List;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/users")
public class MyRestController {
private final UserRepository userRepository;
private final CustomerRepository customerRepository;
public MyRestController(UserRepository userRepository, CustomerRepository customerRepository) {
this.userRepository = userRepository;
this.customerRepository = customerRepository;
}
@GetMapping("/{userId}")
public User getUser(@PathVariable Long userId) {
return this.userRepository.findById(userId).get();
}
@GetMapping("/{userId}/customers")
public List<Customer> getUserCustomers(@PathVariable Long userId) {
return this.userRepository.findById(userId).map(this.customerRepository::findByUser).get();
}
@DeleteMapping("/{userId}")
public void deleteUser(@PathVariable Long userId) {
this.userRepository.deleteById(userId);
}
}
Static Content
By default, Spring Boot serves static content from a directory
called /static
(or /public
or /resources
or /META-INF/resources
)
in the classpath or from the root of the ServletContext
.
Error Handling
By default, Spring Boot provides an /error
mapping that handles all
errors in a sensible way, and it is registered as a “global” error page
in the servlet container.
CORS Support
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration(proxyBeanMethods = false)
public class MyCorsConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**");
}
};
}
}
By default, the embedded server listens for HTTP requests on
port 8080
.
Reactive Web Applications¶
Spring WebFlux is the new reactive web framework introduced in Spring Framework 5.0. Unlike Spring MVC, it does not require the servlet API, is fully asynchronous and non-blocking, and implements the Reactive Streams specification through the Reactor project.
Spring Security¶
Spring Boot relies on Spring Security’s content-negotiation strategy to
determine whether to use httpBasic
or formLogin
.
The basic features you get by default in a web application are:
A
UserDetailsService
(orReactiveUserDetailsService
in case of a WebFlux application) bean with in-memory store and a single user with a generated password (see`SecurityProperties.User
<https://docs.spring.io/spring-boot/docs/3.1.1/api/org/springframework/boot/autoconfigure/security/SecurityProperties.User.html>`__ for the properties of the user).Form-based login or HTTP Basic security (depending on the
Accept
header in the request) for the entire application (including actuator endpoints if actuator is on the classpath).A
DefaultAuthenticationEventPublisher
for publishing authentication events.
OAuth2 is a widely used authorization framework that is supported by Spring.
Spring Session¶
When building a servlet web application, the following stores can be auto-configured:
Redis
JDBC
Hazelcast
MongoDB