初遇
步入新学期后,我也正式开始接触Spring boot。初见时,它对我来说是非常抽象的概念。关于配置、注解等等都是第一次碰到的新名词。而老师讲解的也比较简洁又快,在我还没理解时就已经开始着手环境配置,我也只能及时跟上。我的第一节Spring boot课就在懵懵懂懂中度过。
渐解
如同第一次碰到c语言一样,虽然初次听理论完全不清楚,但是在一次又一次的实践中,只要不是无可救药的人都会慢慢总结经验。
在老师的带领下,我们将环境配置完成后就立马开始对项目的建立。在这过程中,我也逐渐对项目的结构组成有一定的认知:entity:实体层、service:负责业务逻辑层、mapper:数据持久层、controller:控制层,并理清了他们之间的调用关系。对于一些常用的注解也在不断的使用中了解了它的用途。如下:
@Service
@Controller
@Repository
@Component
@Autowired
@Resource
@Service:注解在类上,表示这是一个业务层bean
@Controller:注解在类上,表示这是一个控制层bean
@Repository: 注解在类上,表示这是一个数据访问层bean
@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写
@Autowired:按类型注入.默认属性required= true
@Resource: 按名称装配。
在此基础上我也跟着老师完成了一个及其简单的项目:
困境
当然这其中也有相当多的失误,和新手时期会犯的错误。手打代码失误、格式不对、中英符号不分等等这些自不必多说,最常遇到的当属依赖引入错误、方法错误等等。因为老师也要照顾其他同学,使得我不少的“报红”没有得到及时的解决便要开始下一步,慢慢的,对于学习的挫败感越积越深。特别是学习的中后期,内容越来越深、红线越来越多。
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(@ModelAttribute("vehicle") Vehicle entity
, @RequestParam("isActive") boolean isActive
, @RequestParam("parkingLotId") Long parkingLotId
, @RequestParam("file") MultipartFile file) throws Exception {
entity.setActive(isActive);
ParkingLot parkingLot=parkingLotService.getById(parkingLotId);
entity.setParkingLot(parkingLot);
//上传图片文件指定目录
String fileName = System.currentTimeMillis() + "-" + file.getOriginalFilename();//生成文件名
Path saveTo = Paths.get(savePath, fileName);//设置文件存储的路径
Files.write(saveTo, file.getBytes());//完成存储文件
//存储图片url
entity.setPicUrl("/images/" + fileName);
boolean result = entity.getId() != null ? service.update(entity) : service.insert(entity);
return "redirect:/vehicle/list";
}
//一个图片储存代码,也许对于老手来说并不难,但对学习不多也不深的萌新来说还是很吃力的
在学习之路上,我似乎踏入了泥泞并越陷越深。
相助
所幸周围同学都愿意在我困难时伸出援手,让我不至于太过泄气;后来我意识到不能继续这样下去了,于是决定要做出改变。随着越加深入的学习,我越发理解了Spring boot与Java、sql和html等之前所学知识之间的联系。
<body>
<h6>用户id: <span th:text="${}"></span></h6>
<h6>用户名: <span th:text="${}"></span></h6>
<h6>密码: <span th:text="${}"></span></h6>
<h6>加盐: <span th:text="${}"></span></h6>
<a th:href="@{}" class="btn btn-secondary">返回</a>
</body>
drop table if exists sys_user;
create table sys_user(
id bigint auto_increment primary key comment '主键',
username varchar (100) comment '用户账号',
password varchar (255) comment '用户密码',
salt varchar (200) comment '加盐'
) engine=InnoDB;ALTER TABLE sys_user AUTO_INCREMENT = 1;
在课后巩固基础知识的同时,在课堂上也更加主动的去提问老师和同学。在最后,我也是跟上了老师的步伐,和一个又一个的项目,重拾了学习的信心。
总结
在这次学习中除了学到了专业知识,我也是深刻认识到自学与心态调整的重要性,尤其是要懂得去主动问老师和同学。虽然这些都是老生常谈的东西了,但也正是因其普遍存在而又容易忽视才要不断提及,莫要因此而在学习上自我内耗,在生活上无限懊恼。