[JAVA]架构问题探讨1
1. 背景
Java 架构主要还是从业务角度的架构,架构为了支撑业务的发展,满足大型业务的需求
2. Spring 架构,查看
2.1 整体架构
![[JAVA]架构问题探讨1](https://static.blogweb.cn/article/0ce4b2645c3046aea8e0686d65b38842.webp)
2.1.1 核心容器
- Core : IoC 控制反转,把对象的权利交给框架,或者是一些xml的对象配置
- Beans : 是可复用的组件,扮演着应用程序素材的角色
- Context : 继承了Beans模块特性,增加了国际化的支持,事件广播,资源加载和创建上下文(如一个Servlet容器)
- spring-expression : 表达式 ,如EL
2.1.2 AOP及Instrumentation
- AOP : 面向切面编程,允许自定义,如方法的拦截器
- Instrumentation : Spring类加载器
2.1.3 消息
- Messaging :提供基于消息的基础服务。包括一组消息映射方法的注解,类似于基于编程模型Spring MVC 注解
2.1.4 数据访问/集成
- Data Access : 由JDBC,ORM,OXM,JMS,和Transaction模块组成
- jdbc : JDBC代码的封装和使用
- tx : 支持可编程和申明式事务管理,用于实现特殊的接口和所有的POJO
- orm : 提供流行的对象关系映射,包括JPA, JDO, Hibernate,
- oxm : 用于支持Object/XML mapping,支持对xml的相关操作
2.1.5 Web
- Web : web,webmvc,websocket,webmvc-protlet
2.1.6 Test
- test :组合Junit 或TestNG 框架进行单元测试和集成测试,提供了连续加载ApplicationContext并且缓存这些上下文
2.2
3. Spring Boot的架构,查看
Spring boot 设计的目的是用来简化新的Srping 应用初始搭建已经开发过程。
3.1 Spring 的整体架构
![[JAVA]架构问题探讨1](https://static.blogweb.cn/article/ea0ef78898424088affac2de9582c3d9.webp)
3.1.1 Spring 大的产品
-
Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。
-
Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。
-
Spring Cloud:微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。
3.1.2 组合spring技术
-
Spring XD:是一种运行时环境(服务器软件,非开发框架),组合spring技术,如spring batch、spring boot、spring data,采集大数据并处理。
-
Spring Data:是一个数据访问及操作的工具包,封装了很多种数据及数据库的访问相关技术,包括:jdbc、Redis、MongoDB、Neo4j等。
-
Spring Batch:批处理框架,或说是批量任务执行管理器,功能包括任务调度、日志记录/跟踪等。
-
Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
-
Spring Integration:面向企业应用集成(EAI/ESB)的编程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。
3.1.3 Spring Social 工具包
- Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。
3.1.4 Spring 常用组件
-
Spring AMQP:消息队列操作的工具包,主要是封装了RabbitMQ的操作。
-
Spring HATEOAS:是一个用于支持实现超文本驱动的 REST Web 服务的开发库。
-
Spring Web Flow:目标是成为管理Web应用页面流程的最佳方案,将页面跳转流程单独管理,并可配置。
-
Spring LDAP:是一个用于操作LDAP的Java工具包,基于Spring的JdbcTemplate模式,简化LDAP访问。
-
Spring Session:session管理的开发工具包,让你可以把session保存到redis等,进行集群化session管理。
-
Spring Web Services:是基于Spring的Web服务框架,提供SOAP服务开发,允许通过多种方式创建Web服务。
3.1.5 Spring 辅助工具
-
Spring Shell:提供交互式的Shell可让你使用简单的基于Spring的编程模型来开发命令,比如Spring Roo命令。
-
Spring Roo:是一种Spring开发的辅助工具,使用命令行操作来生成自动化项目,操作非常类似于Rails。
-
Spring Scala:为Scala语言编程提供的spring框架的封装(新的编程语言,Java平台的Scala于2003年底/2004年初发布)。
-
Spring BlazeDS Integration:一个开发RIA工具包,可以集成Adobe Flex、BlazeDS、Spring以及Java技术创建RIA。
-
Spring Loaded:用于实现java程序和web应用的热部署的开源工具。
-
Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。
3.2 spring boot的机制
- Spring 整体机制,解决多应用/模块的问题,并采用spring 公共组件来解决问题
包括存储系统,分布式缓存,消息系统
![[JAVA]架构问题探讨1](https://static.blogweb.cn/article/fd0b42ec10b44a4c92e77ce4727addd9.webp)
- Spring boot XD 数据的处理
3.3 开发微服务
- 提供了模块化方式导入依赖的能力,强调了开发RESTful Web服务的功能并提供了生成可运行jar的能力,这一切都清晰地表明在开发可部署的微服务方面Boot框架是一个强大的工具。
- 在企业级基础设施领域,微服务是一种越来越流行的应用架构,因为它能够实现快速开发、更小的代码库、企业级集成以及模块化部署。
3.4 数据访问
- Spring Boot使数据库集成变成了一项非常简单的任务,因为它具有自动配置Spring Data以访问数据库的能力。只需在你的工程中将spring-boot-starter-data-jpa包含进来
4. Spring Cloud的架构
5. Dubbo的架构
5.1 Dubbo 解决分布式的机制就是采用,注册和消费的方式
![[JAVA]架构问题探讨1](https://static.blogweb.cn/article/c08803366efd49e7a3b076ec27f6ce65.webp)
5.2 Dubbo架构设计详解,查看
![[JAVA]架构问题探讨1](https://static.blogweb.cn/article/ff501964555042d9b88c7c3d9fa2a27e.webp)
8. 项目的实践
8.1 spring boot admin ,查看
可以在hazelcast管理多个应用的配置。
![[JAVA]架构问题探讨1](https://static.blogweb.cn/article/5bf711e686a644a2969cfcae4533db91.webp)
9. 遇到的问题
9.1 解决项目的单元测试问题
- 解决单元测试目录的识别问题
把test的根目录->“Mark Directory as ” -> Test Source root
- 解决单元测试的代码自动产生的问题,安装插件:“junitgenerater v2.0”
- 解决产生的代码的目录问题。把单元测试的目录放到test的目录下。
${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}
9.2 安装spring-boot-admin 报错
- build error while installing yarn, 查看
You need to install yarn on your machine for building the UI
在Mac上安装比较方便,使用初始化脚本即可
## 执行yarn安装的脚本就可以
curl -o- -L https://yarnpkg.com/install.sh | bash
转载自:https://juejin.cn/post/6844903928698503181