注解

@RequiredArgsConstructor

在写controller或者Service层的时候,需要很多mapper接口或者另外的service接口,这时候就会写很多的@autowired注解,代码看起来很乱lombok提供了一个注解

@RequiredArgsConstructor

在类上可生产以代替@autowrired注解,需要注意的是在注入时需要使用final定义或者@notnull注解

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
</dependency>

注意

  1. 必须声明变量为final
  2. 根据构造器注入的,相当于容器调用带有一组参数的类构造器函数时,基于构造函数的DI就完成了,其中每个参数代表一个对其他类的依赖,基于构造方法为属性赋值,容器通过调用类的构造方法将其注入

@Qualifier

在controller中需要注入service那么我的这个service有俩个实现类如何区分开呢

Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一(@service需要设置默认参数)

@Accessors

Accessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果,下面介绍三个属性

fluent

fluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。如下

@Data
@Accessors(fluent = true)
public class User {
    private Long id;
    private String name;
    
    // 生成的getter和setter方法如下,方法体略
    public Long id() {}
    public User id(Long id) {}
    public String name() {}
    public User name(String name) {}
}

chain

chain的含义是链式的,设置为true,啧setter方法返回当前对象

@Data
@Accessors(chain = true)
public class User {
    private Long id;
    private String name;
    
    // 生成的setter方法如下,方法体略
    public User setId(Long id) {}
    public User setName(String name) {}
}

prefix的含义是前缀,生成的getter和setter方法会忽略指定的前缀名

@Data
@Accessors(prefix = "p")
class User {
    private Long pId;
    private String pName;
    
    // 生成的getter和setter方法如下,方法体略
    public Long getId() {}
    public void setId(Long id) {}
    public String getName() {}
    public void setName(String name) {}
}

SpringSecurity

@EnableWebSecurity

@EnableWebSecurity是开启SpringSecurity的默认行为,它的上面有一个Import注解导入了WebSecurityConfiguration类,也就是说我们加上了@EnableWebSecurity这个注解,就是往IOC容器中注入了WebSecurityConfiguration这个类。

@EnableGlobalMethodSecurity

Spring Security默认是在配置类中使用URL进行拦截,禁用使用注解,想要开启注解使用则需要在配置类上加上 如下注解@EnableGlobalMethodSecurity

Last modification:April 24, 2022
如果觉得我的文章对你有用,请随意赞赏