抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

小知识

Boolean.true.equals()

当类型为包装类时,bl 值可以为空,如果一个值的返回结果可能是true、false、null时,就需要使用 Boolean.TRUE.equals() 进行判断

Boolean bl = null;
boolean bl2 = true;

if (Boolean.FALSE.equals(bl)) {
}

注解

@Lombok

@Builder

通过链式方式创建对象

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserDao {
private Integer id;
@Builder.Default
private String username = "admin";
private String password;
private String role;
private String permission;
}
public class Test {
public static void main(String[] args) {
UserDao userDao = UserDao.builder().build();
// UserDao(id=1, username=admin, password=null, role=null, permission=null)
System.out.println(userDao);


userDao.setUsername("admin111");
// UserDao(id=1, username=admin111, password=null, role=null, permission=null)
System.out.println(userDao);

UserDao userDao1 = userDao;
userDao1.setUsername("admin222");
// UserDao(id=1, username=admin222, password=null, role=null, permission=null)
System.out.println(userDao1);
}
}

@PostConstruct

JDK提供,作用于Servlet生命周期,实现Bean初始化之前的自定义操作

当依赖注入完成后用于执行初始化的方法,并且只会被执行一次

//默认文档
@Value("${def}")
private String defDoc;
//当前文档
private String doc;
@PostConstruct
public void init(){
this.doc =defDoc;
}
/*
* 将当前实例赋值给名为INSTANCE的静态变量,实现单例模式的初始化。
* 这样,无论有多少个该类的实例被创建,INSTANCE变量都只会保存最后一个创建的实例
* */
private static ClassName INSTANCE;
@PostConstruct
public void init() {
INSTANCE = this;
}

@PostDestory

JDK提供,作用于Servlet生命周期,实现Bean销毁之前的自定义操作

@SuppressWarnings

@SuppressWarnings(value = {unchecked, rawtypes})

告诉编译器忽略指定的警告,不用在编译完成后出现警告信息。

@SuppressWarnings(“unchecked”)告诉编译器忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息。

@SuppressWarnings(“serial”)如果编译器出现这样的警告信息:The serializable class WmailCalendar does notdeclare a static final serialVersionUID field of type long,使用这个注释将警告信息去掉。

@SuppressWarnings(“unchecked”, “deprecation”)告诉编译器同时忽略unchecked和deprecation的警告信息。

@SuppressWarnings("unchecked")
public void addItems(String item){
@SuppressWarnings("rawtypes")
List items = new ArrayList();
items.add(item);
}

@EnableTransactionManagement

Spring事务总开关

使用注解 @EnableTransactionManagement 开启事务支持后

在访问数据库的Service方法上添加注解 @Transactional 便可

@EnableAspectJAutoProxy

开启SpringAOP功能

有了这个注解才能支持@Aspect等相关的一系列AOP注解的功能,这个注解就相当于在传统的xml配置文件中添加 aop:aspectj-autoproxy 一样

@Import

注解通常用于添加一些自定义的bean到Spring容器中,就相当于xml中定义一样

@RequiredArgsConstructor

@RequiredArgsConstructor(onConstructor_ = @Autowired)

Lombok提供的注解,用于省略**@Autowired**的使用

写在类上面可以代替@Autowired注解,需要注意的是:在注入的时候需要用final定义,或者使用@NonNull注解

@Slf4j
@RestController
@RequiredArgsConstructor(onConstructor = @_(@Autowired))
public class TestController {
/*
*声明为 final 类型
*/
private final TestService testService;
/*
*或者使用 Lombok 的 @NonNull 注解
*/
@NonNull
private TestService testService2;
}

@Value

Spring提供的注解,用于将值注入属性当中

@Value(${}) : ${ property : default_value },注入的是外部配置文件对应的property @Value(#{}) : #{ obj.property? :default_value },SpEL表达式对应的内容;obj对象

default_value,就是前面的值为空时的默认值

@Autowrite

修饰方法时,表示在当前类被Spring容器创建为bean时,自动调用这个方法,将方法参数列表中的bean注入到方法参数当中

public class MyService {

private OtherService otherService;

@Autowired
public void setOtherService(OtherService otherService) {
this.otherService = otherService;
}

// 其他方法...
}

在上面的示例中,setOtherService 方法被 @Autowired 注解修饰,当Spring容器创建 MyService bean 时,会自动调用 setOtherService 方法,并将 OtherService bean 注入到该方法的参数中。

评论