@autowird的替代用法
首先介绍一下Service和@Mapper
@Service是Spring·提供的注解,当标注后会被Spring容器扫描到并创建一个实例(Bean)在@Service中就有@Component
而@Component是 标注Spring管理的Bean,使用@Component注解在一个类上,表示将此类标记为Spring容器中的一个Bean。
对于@Mapper来说呢它是由Mybatis框架提供的,是把接口交给Spring进行管理
@autowird是spring注解基于依赖注入的原理。在Spring容器中,所有的Bean都会被实例化和管理,它们之间的依赖关系由Spring容器来维护。当一个Bean依赖于另一个Bean时,可以使用@Autowired注解来告诉Spring容器自动装配这些依赖。
但我们使用的时候会发现 使用@autowird时不被Spring推荐
而Spring推荐的方法是构造函数注入
但如果有多个成员变量要注入的话就有很多的构造函数
我们可以通过
@RequiredArgsConstructor必备的构造函数,来对有需要的成员变量进行构造
对有需要的成员变量声明时加上final,来表示常量,必须要一开始进行构造
VO,PO,DTO的转换
从实质上看来呢,vo,po,dto是属于同一种对象的,但侧重点不同
先说PO,PO侧重于数据库的永久对象,直接和数据库中的数据列一一对应,这个大家很熟悉。
VO侧重于数据返回给前端的对象,比如说数据库密码,电话号码等等涉及到用户隐私的或者前端不需要的就不存在在VO对象中
而DTO是侧重于后端接收的数据,比如说注册时间,创建时间,账号状态等等信息是交由后端处理的,而前端不能处理的就不存在在DTO对象中
总得来看呢就是PO包含的最多,而VO和DTO的各是PO的一部分
如何从DTO转换成PO呢?
这就需要拷贝过去
常用的一种方法呢就是hutool提供的拷贝方法
BeanUtil.copyProperties(userDTO, User.class);
PO转化VO一样,需要拷贝
BeanUtil.copyProperties(user,UserVO.class);