博主也在一点一点学习,把目前掌握的注解一一给大家介绍,注解的使用场景和作用分析!
博主再次谢谢各位,本章会不断更新和补充,我有什么重要的注解遗漏的话,希望大家私信指导和补充!
下面进入正题---------↓
- 创建一个DefaultCache类然后交给spring 管理。
package jwdlh;
@Component
@Scope("singleton")
@Lazy
public class DefaultCache {
public Cache() {
System.out.println("cache()");
}
@PostConstruct
public void init() {
System.out.println("init()");
}
@PreDestroy
public void destory() {
System.out.println("destory");
}
}
- @Component 是Spring中用于描述Bean类的一个注解。
- @Scope 是Spring中用于定义Bean对象作用域的一个注解,其常用的值有singleton(整个内存有一份Bean实例),prototype(每次获取都会创建新实例)等。
- @Lazy 注解用于描述类,其目的是告诉spring框架此类支持延迟加载。
- @PostConstruct 注解用于描述bean对象生命周期方法中的初始化方法,此方法会在对象的构造方法之后执行。
- @PreDestroy 注解用于描述Bean对象生命周期方法中的销毁方法,此方法会在对象销毁之前执行。
添加sringboot 测试类,进行bean的获取及测试
@SpringBootTest
public class DefaultCacheTests {
@Autowired
private DefaultCache defaultCache;
@Test
public void testCache() {
System.out.println(defaultCache);
}
}
- @SpringBootTest 注解用于告诉spring框架,此测试类交给spring管理。
- @Autowired 注解用于描述属性或相关方法(例如set方法,构造方法等),用于告诉spring容器为指定属性赋值。
定义商品业务数据层接口及业务方法
package com.cy.pj.goods.dao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GoodsDao {
@Delete("delete from goods where id=#{id}")
int deleteById(Integer id);
}
- @Mapper 是由MyBatis框架中定义的一个描述Mapper接口的的注解,用于告诉Spring框架此接口由底层(mybatis)创建其实现类对象,并存储到spring容器.
Lombox注解
-
@Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
-
@Getter 使用方法同上,区别在于生成的是getter方法。 @ToString 注解在类,添加toString方法。
-
@EqualsAndHashCode 注解在类,生成hashCode和equals方法。
-
@NoArgsConstructor 注解在类,生成无参的构造方法。
-
@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
-
@AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
-
@Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
-
@Slf4J 为了类中添加一个日志属性对象 private static final Logger log = LoggerFactory.getLogger(UserController.class);
- 代码案例分析:
@Slf4j
@Data //setter,getter,toString()
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class Goods implements Serializable{
private static final long serialVersionUID = 6239917530570596544L;
//private static final Logger log=LoggerFactory.getLogger(Goods.class);
private Long id;;
private String name;
private String remark;
private Date createdTime;
public String doPrint() {
log.info("goods.display()");
return toString();
}
}
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class LombokTests {
@Test
public void testGoods() {
Goods g=new Goods();
g.setId(1000L);
g.setName("spring boot");
g.setRemark("spring boot ...");
g.setCreatedTime(new Date());
System.out.println(g);
g=new Goods(200L, "lombok", "lombok...", new Date());
System.out.println(g);
g=new Goods()
.setId(300L)
.setName("framework")
.setRemark("framework...")
.setCreatedTime(new Date());
g.doPrint();
}
}
以下是借鉴搜索引擎,部分我还未用到-------------------