Java项目框架搭建系列(Java学习路线)

前言:

已经工作4年,真是时间飞逝。

其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了。

你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务逻辑开发。

如果你更努力一点,你可能有去摸索一些配置的作用,一些问题的排查会更有经验和自己的想法。

如果你好奇心更强一点,可能会去了解一些框架的原理,各个框架之间是怎么相互协助工作的。自己能否从无到有将这些框架串联起来。

想写一系列这样的文章:将Java项目开发过程中的一些框架,如何一步步串联起来,并且结合源码探索其核心部分原理。以及项目从小项目演变到大项目的过程中,需要开发框架以及结构变化。以及特定业务场景设计。具体概请见下文。

大概使用的开发框架及工具:

基本工具:Eclipse、Maven、Tomcat

前端:Jquery、Vue.js、 Element

后台核心框架:Spring、SpringMVC、MyBatis

后台辅助框架:日志框架Logback、安全框架Shiro、任务调度框架Quartz

分布式框架:Dubbo、RabbitMQ、Redis…………..

除了这些框架还有一些特定业务场景,以及高扩展高可用的架构演变过程等等。 
主要分为下面三个阶段博客提纲。

阶段一:集中式基本架构

一、基本工具:Eclipse、Maven、Tomcat(此篇不写博客,关于Maven猿友可自行网上安装教程及博客)

二、Spring介绍及探索:主要就是依赖注入以及AOP原理,Spring使用大多以配置为主,因此从配置入手,结合源码探索其原理。

三、SpringMVC:以实例入手,结合源码探索其主要原理。

四、Mybatis:以实例入手,结合源码以及分页插件拓展探索其用法及原理。

五、日志框架Logback:结合实例、配置、源码了解其原理,并对Logback封装,使得更加符合实际业务需求。

六、前端框架Vue.js+Element使用,Jquery默认猿友已经会用了。

七、安全框架Shiro:主要登录及权限认证实例入手,探索其用法。

八、任务调度框架Quartz:实例+配置+源码探索用法及基本原理。

九、异步线程池使用及业务场景。

十、数据库事务实例及应用场景

十一、ehcache本地缓存实例及应用场景。

之所以阶段一叫集中式基本架构,是因为这种结构适合前端代码,后台代码在一个工程,部署到一台服务器上里面。带来的问题有:性能问题、工程十分臃肿、风险很大、不好迭代。

当然性能问题可以通过集群方式,就是部署到多台机器上,然后根据用户访问的ip进行分流到不同机器响应。目前web项目大多采用这种做法。

但是一旦业务及功能模块多了起来,需要快速迭代,必然要模块拆分。因此必须采用分布式架构。 
分布式架构一般根据功能进行划分模块,以电商为例:对外web端一个模块、管理web端、商品后台一个模块、订单支付后台等一个模块、用户信息后台一个模块。各个模块之间通过接口服务实时通信,异步通过MQ方式通信、缓存也需要使用分布式缓存框架。

接下来我们看下阶段二的博客提纲。

阶段二:高扩展、高性能、高可用、快速迭代分布式架构

一、分布式服务框架Dubbo:主要实例以及原理探索。

二、日志流水透传:让同一个请求经过的多个模块的日志流水保持一致。

三、分布式消息框架RabbitMQ:实例+配置+源码理解其原理。

四、任务调度框架Quartz改造:将所有模块的JOB任务集中管理,以服务调用形式触发。

五、分布式缓存框架Redis:了解其原理并规范使用,各个模块定义系统码,共享缓存内存资源,但是已系统码隔离。

六、前后端分离:对性能以及用户体验较高的web模块进行前后端分离,前端模块全部为静态资源,部署待静态资源服务器,与controller拆分开。

七、session共享:之前也提到根据功能划分模块,多个web模块对外提供请求相应,那么就会涉及session共享,一次登录即可。主要采用tomcat-redis技术实现session共享。

八、OAuth2.0认证和授权:这是扩展外部合作渠道的毕竟之路,如授权给外部商户获取你的用户信息。如微信公众号就是这种做法,很多可以使用微信登录以及QQ登录也是这种做法。

九、封装常用的业务工具类:如批量导入导出,ftp上传及下载文件、json处理等等。

十、将框架集成部分抽出形成一个基础框架:这个非常有意义,可以简化配置,对框架升级等等。

阶段三:适配大数据、高并发以及自动化要求(可能更偏向运维)

一、日志监控,自动告警:将ERROR日志通过邮件或短信方式发给对应的开发人员,可以起到很好的提醒作用。

二、自动化部署以及持续集成:模块多了,上线部署变得更加频繁的时候,就需要简化部署流程。

三、代理与负载均衡&集群:根据阶段二,一般web项目通过ip进行负载分流,后台可以使用Dubbo的负载均衡。

四、资源服务器搭建

五、数据读写分离

六、分库分表

七、秒杀设计

八、非关系型数据库使用

九、大数据工具的使用

我有一个微信公众号,经常会分享一些Java技术相关的干货;如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。

原文地址:http://blog.51cto.com/11436461/2106762

时间: 2024-10-18 11:45:52

Java项目框架搭建系列(Java学习路线)的相关文章

记录-项目java项目框架搭建的一些问题(maven+spring+springmvc+mybatis)

伴随着项目框架的落成后,本以为启动就能成功的,but.... 项目启动开始报错误1:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 这个错百度到说是缺少这个包,但实际在项目中看到maven里面是有这个包的.于是继续百度到[可能包是找到了,但没有依赖在项目中] 项目右击-----project-----deployment assembly , add ,java bui

[AngularJS]项目框架搭建-MyFirst Skeleton

前文有提到过 做一个简单的订餐系统,最近花了点时间,了解了一下AngularJS框架的使用.因此本文的目的根据了解的知识重新搭建基于 AngularJS框架. 该框架是基于对于AngularJS的学习而制定的,这其中肯定有很多不足,在以后的学习中在加以改进. 一.系统准备 安装Node.js version>=0.10.0版本 Git  Shell 并添加该 Shell脚本到Path环境变量中  Path=:,"$git_home/bin"   二.手动搭建框架 2.1 创建开发

webapi框架搭建系列博客

webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin webapi框架搭建-依赖注入之autofac webapi框架搭建-日志管理log4net webapi框架搭建-webapi异常处理 原文地址:https://www.cnblogs.com/shengyu-kmust/p/8279300.html

1、Android项目框架搭建 (分析需求、整理资料)

闲来无事.想搭个框架试试 分析一般应用 将资料整理整理 粗略统计 需要以下资料 1.android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新 ListView.ViewPager.WevView.ExpandableListView.GridView.(Horizontal )ScrollView.Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多.并且他实现的下拉刷新ListView在item不足一屏情况下也

(三) Angular2项目框架搭建心得

前言: 在哪看到过angular程序员被React程序员鄙视,略显尴尬,确实Angular挺值得被调侃的,在1.*版本存在的几个性能问题,性能优化的"潜规则"贼多,以及从1.*到2.*版本的面目全非,不过宽容点来看这个强大的框架,升级到ng2肯定是一件好事情,虽然截至目前ng2还存在或多或少需要完善的地方,但是ng2做到了留下并强化ng1好的部分,移除或改善其不好的部分,并且基于许多较新Web技术来开发,不去看从ng1迁移到ng2的门槛和工作量的话,ng2的编程体验是很酷炫的. 目前n

零基础转行学Java必须了解的市场行情与学习路线?

本文给想转行学习JAVA的朋友提些学习建议,并给出Java的学习路线,希望帮助大家少走弯路. 正准备转行或是在自学Java必须具备的几个条件: 01学习能力 什么是学习能力,就是当一个陌生东西给你了,是否有学习他的欲望,自己琢磨的心思,学习能力非常重要,如果一个人没有学习能力的话,任何东西都很难学. 02逻辑思维强 JAVA不是每一个人都能学会的,因为JAVA的逻辑比较强,有一些人天生逻辑就差,比如一道数学题,有的同学马上懂,有的同学需要老师讲几遍,但是有的同学老师咋讲都不懂. 03老师指点 必

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

Selenium+Java完整框架搭建

一.WebDriver框架开发实战 1.框架的思想 (1)什么是框架? 框架是可以被应用开发者定制的应用骨架 (2)为什么要写框架? 提高脚本可维护性 提高编写脚本的速度 提高脚本可阅读性 (3)框架的几个要素? driver管理,等待管理,常用方法封装,LOG,常用类封装,数据,失败重跑等等 2.前期准备-框架搭建前期步骤 通过IDEA新建个项目名TestAutomation2019的Maven工程 导入Selenium和TestNG对应的jar包 在工程根目录新建一个driver文件夹,放置

SSM框架搭建,新手学习中,欢迎指教

1.前言 最近项目中用到了spring+mybatis框架,闲暇之余,自己就想搭一套SSM(spring+springMVC+mybatis)的框架,结果发现并没有自己想象的那么简单,看了网上的很多教程,最多的就是那个用maven搭建的SSM,起初自己也想用maven搭建,后来出现种种问题,就没用,直接用jar包,下次熟练了再用maven搭一个.废话不说,直接开始. 2.版本介绍 3.新建一个web项目SSM 4.引入jar包,附录会有jar包下载地址,这里我的jar包比较多,里面很多是源码包,