单应用框架
文章平均质量分 78
jea_dong
这个作者很懒,什么都没留下…
展开
-
架构小白到砖家-09-【数据存储问题】-ORM框架和纯SQL的对比
通过前面对jpa提供的JpaRepository和JpaSpecificationExecutor两种面向对象数据库操作研究,已经解决了绝大多数开发工作中单表对象化操作。这两种解决方案确实都非常优雅,省去了写SQL的烦恼,甚至连接口的实现类都不需要我们去写了。但是我们心中更加好奇,jpa难得真的就能将数据库概念给抹杀掉了吗?让我们带着疑问,再继续整理一下,还有什么数据库使用场景咱们没有讨论到。...原创 2019-01-10 12:11:58 · 773 阅读 · 3 评论 -
架构小白到砖家-14-【权限管理问题】-权限管理理论
目前为止咱们的应用所有人都是可以自由访问的,但是有些功能不能让所有人使用,那么咱们就必须处理应用权限管理问题。权限管理分为两部分,用户认证(Authentication)和用户授权(Authorization)。用户认证解决访问用户的合法身份问题,用户授权解决访问资源是否有权限问题。咱们应用是web应用,所以访问资源是URL请求。从技术层面使用拦截器对所有应用请求进行拦截,然后进行权限管理操...原创 2019-01-16 11:11:49 · 535 阅读 · 0 评论 -
架构小白到砖家-19-【应用脚手架问题】-eclipse整合maven archetype
应用框架的搭建需要一定工作量,我们每次开发新应用都手动搭建一遍,或者耐心的慢慢copy现有应用,这个工作确实不是一件愉快的事情。我们需要一个应用脚手架,每次新应用只需要一个引导界面,填写项目基本名称信息,就可以完成框架的搭建工作。maven正好提供了这种解决方案,我们在创建maven工程的时候,就有很多archetype模板可以选择,并IDE有图形化的引导工具。那我们就来看看如何创建mav...原创 2019-01-21 17:44:42 · 590 阅读 · 0 评论 -
架构小白到砖家-08-【数据存储问题】-JpaSpecificationExecutor解决单表动态查询
接着上一篇的疑问,难道jpa真的就能无敌到能解决所有sql查询的情况吗?这次终于有否定的答案了,还是不行的。让我们在看看jpa怎么实现自动查询的。 User findByRealName(String realName); User findByUsernameOrEmail(String username,String email);可以看到我们是在接口中声明的方法,是的,也就是说这些查...原创 2019-01-10 10:00:07 · 192 阅读 · 0 评论 -
架构小白到砖家-07-【数据存储问题】-JpaRepository解决单表固定查询
终于把用户请求问题处理完毕了,接下来可以解决web应用第二个问题,数据存储问题。咱们在应用框架发展历史中已经知道了,数据存储框架经过了纯JDBC,到EJB重量级框架,在到springAOP切面编程+spring的轻量级容器,然后到ORM框架hibernate,最后到JPA统一ORM标准。那么springJPA到底是怎么使用呢?根据面向对象编程思想,java操作数据库,应该使用对象操作的方式,而...原创 2019-01-09 15:48:59 · 486 阅读 · 0 评论 -
架构小白到砖家-06-【界面渲染问题】-整合模板引擎thymeleaf
浏览器和应用怎么发送请求和传递参数,咱们是掌握了,好像平时我们经常访问的网站,应用返回的内容都非常丰富,怎么才能让咱们的应用也能做到呢?我们需要先看看http全称叫超文本传输协议,也就是说http协议本身是能够传输大量信息。另外在web应用的世界里面,为什么是使用浏览器作为web应用访问工具呢?而不是传统应用QQ一样,使用之前还需要先安装一个软件呢?(当然QQ也是有web版本的)。这其实就是w...原创 2019-01-09 13:53:34 · 213 阅读 · 0 评论 -
架构小白到砖家-05-【用户请求问题】-springmvc接收请求
springboot工程已经创建好了,咱们的前期准备工作算是告一段落,下面将开始真正的进行单应用技术研究工作。咱们再回顾一下,web应用解决的第一个大问题,“处理用户业务请求接收问题”。springmvc是一个专门解决这个问题的框架,并且使用的URL的自动解析规则,不用维护像struts那样庞大的配置表,并且这样做还有一个好处,可以利用URL和http的技术实现RESFul风格的请求处理方式,让请...原创 2019-01-09 11:00:01 · 174 阅读 · 2 评论 -
架构小白到砖家-04-【实际案例】-创建springboot工程
咱们已经知道了java的web应用使用springboot来搭建框架,并且也明白了它的使用方法就是配置信息,那么接下来咱们就开始web应用之旅吧。使用eclipse创建一个java的web工程,这里采用maven来管理项目结构,因为springboot也是使用maven方式来写的demo,maven的知识这里就先不讨论,后续再慢慢补充。首先告诉maven我们需要的jar,咱们web应用框架需要...原创 2019-01-08 17:21:48 · 142 阅读 · 0 评论 -
架构小白到砖家-03-【应用配置信息问题】-利用springboot配置机制
经过web应用的发展过程,我们已经确定使用springboot就可以搭建一个web应用的开发框架了。如何使用springboot呢?springboot是一个java技术的web应用框架最佳实践,核心思想就是约定优先。什么是约定优先呢?就是相关技术的使用方法进行了统一规范,大家不要有个性化的方式,这样我们只需要按要求配置好框架需要的基本信息就可以了。所以使用springboot就学习它的配置规范...原创 2019-01-08 14:59:20 · 167 阅读 · 0 评论 -
架构小白到砖家-02-【单应用系统框架发展过程】-为什么使用springboot?
web应用开发经历了很久的发展,已经越来越复杂了,为了更好的搭建应用框架,还是在梳理下历史发展过程。web应用开发语言就很多,这里只讨论java方案的历史。web应用的基本原理是浏览器和web应用之间的通信。相当于两个人(浏览器和web应用)使用写信的方式来进行交流,邮差(http协议)来将信件在两人之间传递。信件的查看和书写需要借助一些工具(html、css、js)。web应用使用java定义...原创 2019-01-08 11:41:59 · 247 阅读 · 0 评论 -
架构小白到砖家-18-【session共享问题】-springsession+redis实现共享session
咱们已经完成了单应用框架的整合工作,可以满足开发工作需求了,应用在上线部署之前,咱们还要解决一个系统高可用问题,需要将应用部署成集群。但是集群会引发一个新的问题,那就是用户登录使用系统,会在每个集群节点都有一个session,会导致我们无法跟踪用户会话信息。所以就需要把session进行集中管理,来解决集群session共享的问题。spring已经提供了比较好的解决方案springsessio...原创 2019-01-18 13:53:39 · 161 阅读 · 0 评论 -
架构小白到砖家-01-前言
首先梳理下单应用框架的核心技术,主要解决两大问题,用户请求处理和数据存储,将确定应用框架基础为什么使用springboot?springmvc如何解决用户请求问题,并通过thymeleaf模板引擎渲染复杂用户界面的HTML。再分析springjpa怎么实现数据存储方案。然后补充单应用实际生产运营过程中,为了优化性能、解决安全问题、快速处理生产问题、运维部署等模块。最后就是一些比较抽象的设计模式、系统架构、代码重构、云服务等编程思想。原创 2019-01-07 15:07:36 · 145 阅读 · 0 评论 -
架构小白到砖家-17-【密码安全问题】-springsecurity整合密码加密机制BCryptPasswordEncoder
用户认证需要验证用户的密码是否正确,但是为了保护用户隐私,防止用户账号密码泄露,用户在注册的时候,都需要将密码进行加密。那么在用户认证的时候,就需要将原始密码和加密密码进行验证。这样就需要注册加密和验证加密的方式保存一致。我们就补充下加密的概念,前面咱们已经在数据库密码加密时,学习了对称加密和非对称加密的概念,知道了私钥和公钥的作用。不管是对称还是非对称加密,都是可以将密码还原成真实信息。用户的...原创 2019-01-17 15:26:32 · 3635 阅读 · 0 评论 -
架构小白到砖家-16-【权限管理问题】-springsecurity处理动态权限验证
权限管理也面临数据存储同样的动态处理问题,默认security都是使用提前配置权限设置,或者使用注解控制方法权限,但是这就造成了硬编码的问题,实际生产中权限是根据业务要求进行动态调整的。为了解决硬编码问题,就需要动态获取权限信息。权限信息包含两部分信息,用户拥有权限和资源访问权限。用户拥有权限,在登录的时候是可以动态进行加载的。资源访问权限,如果使用security默认的java代码配置方...原创 2019-01-17 10:32:00 · 610 阅读 · 0 评论 -
架构小白到砖家-13-【密码安全问题】-springboot整合druid加密
应用不光保障功能完整性就可以了,还需要保障信息安全,所以我们还需要关注如何隐藏应用敏感信息的问题。数据库的账号密码就是这种信息,我们需要对其进行加密处理。正好druid又提供了非常好用的加密方案,让我们来看看如何使用吧。我们首先需要补充点加密的概念,加密有两种方式(对称加密和非对称加密),对称加密就是一个秘钥进行加密和解密;非对称加密是一个秘钥对,分为私钥解密,公钥加密。显然非对称加密要更加安全...原创 2019-01-11 14:57:21 · 949 阅读 · 0 评论 -
架构小白到砖家-12-【应用日志问题】-使用logback
应用在运行过程中,遇到生产问题是常有的事情,这种情况下,咱们需要获取应用当时发生问题时的运行信息,来帮助我们排查问题原因。那么如何保持应用运行信息呢?就需要引入日志机制。目前日志工具已经很多了,咱们就采用springboot推荐的logback。那么我们先来log日志的基本概念,我们创建一个logger来使用日志工具,另外日志定义了四种日志级别(debug、info、error、warn),下面...原创 2019-01-11 10:35:30 · 183 阅读 · 0 评论 -
架构小白到砖家-11-【数据库监控问题】-打开druid的监控封印
单应用框架终于解决了用户请求问题和数据存储问题,日常生产运营过程中随着业务发展,应用的性能将经受一个比较大的考验,而数据库SQL性能是在数据量增长过后,最容易产生查询性能问题。为了方便大家快速定位问题SQL,所以对应用执行的SQL进行实时监控就很有必要了。当然也可以让运维同学帮忙直接去数据库端排查日志,但是这样的方式笨拙而且效率很低,不太符合咱们程序员独立解决问题的风格。还好咱们选择了一个比较优秀...原创 2019-01-11 09:39:03 · 188 阅读 · 0 评论 -
架构小白到砖家-10-【数据存储问题】-JpaRepository支持原生sql操作
俗话说金无足赤,人无完人,jpa作为一个存储层技术方案肯定也有不完美的地方,在多表模型和特殊数据库操作方面,还是需要传统sql来进行处理。那么咱们就继续讨论如何通过jpa来实现原生sql的支持?jpa已经提供了JpaRepository的默认实现类SimpleJpaRepository,咱们现在想自定义方法来扩展JpaRepository,就只能写一个自定义BaseRepository接口继承它...原创 2019-01-10 14:43:17 · 557 阅读 · 0 评论 -
架构小白到砖家-15-【权限管理问题】-springboot整合springsecurity
我们已经掌握了权限管理理论,核心就是用户认证和用户授权。那么我们就来学习springsecurity如何解决这两个问题。springboot整合springsecurity比较简单,pom中引入直接使用starter相关的jar。 <!-- spring boot security --> <dependency> <groupId>org.s...原创 2019-01-16 13:18:59 · 272 阅读 · 0 评论