卷前:之所以想写这篇文章还是来源于实际的工作(当然不是让我本人来进行“任务驱动学习”,如果是我,那作者是不够格来写下他的思考的)。工作性质,技术上要求不深,业务相对重要。而让没有系统学习过java语言和java生态的人,来进行java项目的编码与开发,不是不可能,相反这种情况很多,美其名曰讲究全(别站起)栈(太累了)。而此处我所说的java,它并不止是简单的一门OOP语言,而是一个完整生态圈,丰富的开源社区资源,使得应用型上层开发像是站在巨人的肩膀上,不用过多关注底层实现,专注于业务。
学习路线-Routine
0基础的转入
相信不会存在真正的零基础,能被要求进行跨语种项目开发,自然前一门语言也是有过一定编码开发经验的,而编程语言大部分都是一通互通的。
无准备工作地投入开发
任务驱动,讲究的就是相对弱化的准备工作,这时你需要拿到项目,使用一个IDE将其运行run起来,再配合其他的工具如gradle、maven来简化工程结构,jenkins持续集成等等,将项目部署到虚拟机jvm,之后开启的jvm进程之上,有如tomcat、apache之类的成熟web服务容器。你可以将.java文件使用jdk工具包编译成.class字节码,然后部署到容器上,比如常用的web容器tomcat,动态资源便是字节码,静态资源也能作为一个WEB-INF文件夹发布到容器中,html的超文本加上css的修饰和js的脚本,这样一个工程就可以运行起来了。
知道了运行的大致流程,那么实际工作中的maven、spring、jar、war、mvc又是什么,这里不细谈其原理,面向任务驱动,我们只要想要的。
无限的MAVEN
为什么用无限来修饰maven工具呢,因为他带来的精简工程机构和解决冗杂依赖功能太重要了,gradle都被比了下去。
maven这里不作过多说明,你只要知道他能解决项目中import的大大小小jar包依赖,能简化项目编译运行发布流程就够了,至于原理,便是一个个的pom.xml组织起来各个模块,以pom为单元,或水平或垂直地划分庞大的工程。熟悉了pom文件的结构,对maven的印象也就加深了。
Spring的春天
JAVA的春天是spring,spring的春天是全季。你可以不会Spring,但你一定要想办法了解清楚IOC和AOP。
IOC:传统的java编写,用new来实例化对象,项目越庞大,你new的也越多,new出来重复的对象也越多,先不说影响性能,连阅读友好都做不到了。IOC有一个名词叫做依赖注入DI,这个DI便是来代替new 的。将IOC看作一个容器,但他并不是某种具体的技术,是一种设计思想,容器思想下,我们将项目中能抽离出来的类,使用配置文件或者代码注解约定好,让这些类在项目初始化时就加载好,加载到IOC容器中,统一使用,那你可能疑问到我新建一个全局的class里面放好所有我要用的其他对象不就行了吗?不错,你想到这里说明有设计思维了,IOC下,这些类,我们能统一管理他们的生命周期,管理是单例的还是多例的,在我们要使用时,引用一下IOC容器中的某个对象,然后轻松的就用上里面的属性和方法了。
@Autowired
Qualifier
private BaseService baseService;
Spring框架下,可以见到很多这样的声明,可以看做是IOC的灵魂了。