Android程序员的Java后台学习建议

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

一、背景

了解下有利于消化

这里快速说下 Java Web 开发的背景,作为Android开发,在学习后台开发上无疑用 Java 做敲门砖是成本较低的选择,Java Web 与 Android 之间的相互转岗也屡见不鲜。

起初的 Java Web 开发并没有明确的前后端之分,如今也依旧存在前后端不分离的项目,只是随着时间发展,从项目管理维护、开发职责和效率的考虑下,慢慢的有了前后端职责之分。

对于Android开发而言,后端通俗而言就是写restful接口的。

Java Web 大致发展历程如下图,从 Struts2 开始的 MVC 模式,再到 Spring控制反转(IOC)和切面编程(AOP) ,再到 SpringBoot 全家桶,其门槛也在逐步降低。对于这个历程感兴趣的可以自行了解下,后续主要推崇Spring 大家庭。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实上对于 Android 开发而言, Spring 并不会是一个陌生的概念,其 核心理念之一 IOC (也称依赖注入) 和使用逻辑与 Dagger 如出一辙,所以在入门时 《Spring实战(第4版)》 这本书相信会 Android 开发者是不错的选择。

二、框架选择

Spring Boot 全家桶快到碗里来

Java Web 的世界同 Android 一样存在各类框架,也许一些前辈们都建议不要从学习框架开始,但是我个人而言更习惯从_实用性_切入: 选择一个主流框架学习,挑一个开源项目对照实践,之后完成一个小项目躺坑,最后才开始深入去学习感兴趣的点。 毕竟万事开头难,如果一开始太过枯燥,难免让人“把持不住”。

在 Spring 断断续续的学习中,主要接触了 SSH (曾经) 和 SSM (如今) 两种组合开发框架,至于怎么选择,你懂的。

  • SSH:Struts2 做控制器(controller) + Spring 管理组件 + Hibernate 负责数据库。
  • SSM: SpringMVC 做控制器(controller) + Spring 管理组件 + MyBatis 负责数据库。

作为 Android 开发者,如果你使用过或了解过 Dagger ,那么理解和使用 Spring 并不难。通过各类注解如 @Contorller@Service@Configuration 等去标明类的用途,通过 @Autowired 去注入使用的方式,相信会让你倍感亲切。

如果说 Spring 是类似 Dagger注入和管理实体的容器框架,那么SpringMVC 就是基于 Spring 功能之上添加的 Web 框架。

对于 Android 开发而言,MVC 肯定是不会陌生的,实际上后台开发人员通常就是写个Controller 提供个 Model 给你。而 HibernateMyBatis 都是持久层框架,属于能方便使用如 MySql 等数据库的 ORM 框架。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果说 SpringSpringMVC 是 Android 开发者较友好的选择,那么 Spring Boot 则是你的“绿色通道”。 Spring Boot 又称之为全家桶,因为它集齐了各类常用的开发框架,同时降低了 Spring 开发的门槛,更是简化了各种配置过程,而且 Jetbrains 大家庭支持它!

所以现阶段而言,个人认为 SpringSpringMVCSpringBoot 是 Android 开发者学习入门 Java Web 的不错选择。

先理解 Spring 设计模式,再学习 SpringMVC Service/Controller 等的开发,最后使用 SpringBoot 快速搭建 Web 项目。 当前这只是一个开始,后续的路诸如还有:

  • 数据库的学习:mysql、mongodb
  • 持久层框架的学习:hibernate 、mybatis
  • 缓存框架的学习:ehcache、redis
  • 安全权限框架的学习:shiro、spring security
  • 分布式框架的学习:dubbo、spring cloud
  • 代理服务:Nginx

毕竟学无止境,有一技旁身,至少不至于孤陋寡闻。

三、开发工具选择

“不用IDE,文本编辑器” 一直是大神的标配,但是“懒惰”使我进步,所以一款好的 IDE 可以让人更舒服的过度到入门。

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

ics/618154847)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java实现秒杀系统@Controller @RequestMapping("seckill")//url:/模块/资源/{id}/细分 /seckill/list public class SeckillController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private SeckillService seckillService; @RequestMapping(value="/list",method = RequestMethod.GET) public String list(Model model){ //获取列表页 List list=seckillService.getSeckillList(); model.addAttribute("list",list); //list.jsp+model = ModelAndView return "list";//WEB-INF/jsp/"list".jsp } @RequestMapping(value = "/{seckillId}/detail",method = RequestMethod.GET) public String detail(@PathVariable("seckillId") Long seckillId, Model model){ if (seckillId == null){ return "redirect:/seckill/list"; } Seckill seckill = seckillService.getById(seckillId); if (seckill == null){ return "forward:/seckill/list"; } model.addAttribute("seckill",seckill); return "detail"; } //ajax json @RequestMapping(value = "/{seckillId}/exposer", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) @ResponseBody public SeckillResult exposer(@PathVariable("seckillId") Long seckillId){ SeckillResult result; try { Exposer exposer =seckillService.exportSeckillUrl(seckillId); result = new SeckillResult(true,exposer); } catch (Exception e) { logger.error(e.getMessage(),e); result = new SeckillResult(false,e.getMessage()); } return result; } @RequestMapping(value = "/{seckillId}/{md5}/execution", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"} ) @ResponseBody public SeckillResult execute(@PathVariable("seckillId")Long seckillId,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值