Spring实战笔记
Spring application context
创建和管理应用组件
dependency injection
通过构造器参数和属性访问方法来实现的
@Configuration @Bean
@Configuration注解会告知Spring这是一个配置类,会为Spring应用上下文提供bean。
@Bean(默认情况下,这些bean所对应的bean ID与定义它们的方法名称是相同的)。
在Spring技术中,自动配置起源于所谓的自动装配(autowiring)和组件扫描(component scanning)。借助组件扫描技术,Spring能够自动发现应用类路径下的组件,并将它们创建成Spring应用上下文中的bean。借助自动装配技术,Spring能够自动为组件注入它们所依赖的其他bean。
@Data
类级别的@Data注解就是由Lombok提供的,它会告诉Lombok生成所有缺失的方法,同时还会生成所有以final属性作为参数的构造器。
@RequestMapping @PostMapping @GetMapping
在类级别上使用@RequestMapping,以便于指定基本路径。在每个处理器方法上,我会使用更具体的@GetMapping、@PostMapping等注解。
声明校验规则
import javax.validation.constraints.Digits;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.CreditCardNumber;
import javax.validation.constraints.NotBlank;
import lombok.Data;
@Data
public class Order {
@NotBlank(message="Name is required")
private String name;
@CreditCardNumber(message="Not a valid credit card number")
private String ccNumber;
@Pattern(regexp="^(0[1-9]|1[0-2])([\\/])([1-9][0-9])$",
message="Must be formatted MM/YY")
private String ccExpiration;
@Digits(integer=3, fraction=0, message="Invalid CVV")
private String ccCVV;
}
@Valid注解会告诉Spring MVC要对提交的Taco对象进行校验。如果存在校验错误,那么这些错误的细节将会捕获到一个Errors对象中
@PostMapping
public String processOrder(@Valid Order order, Errors errors) {
if (errors.hasErrors()) {
return "orderForm";
}
log.info("Order submitted: " + order);
return "redirect:/";
}
@ConfigurationProperties
为了支持配置属性的注入,Spring Boot提供了@ConfigurationProperties注解。将它放到Spring bean上之后,它就会为该bean中那些能够根据Spring环境注入值的属性赋值。
@ConfigurationProperties实际上通常会放到一种特定类型的bean中,这种bean的目的就是持有配置数据。这样的话,特定的配置细节就能从控制器和其他应用程序类中抽离出来,多个bean也能更容易地共享一些通用的配置。