转载

[JAVA]架构问题探讨1

Java 架构主要还是从业务角度的架构,架构为了支撑业务的发展,满足大型业务的需求

2. Spring 架构,查看

2.1 整体架构

[JAVA]架构问题探讨1

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

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
  • Spring boot XD 数据的处理
    [JAVA]架构问题探讨1

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

5.2 Dubbo架构设计详解,查看

[JAVA]架构问题探讨1

8. 项目的实践

8.1 spring boot admin , 查看

可以在hazelcast管理多个应用的配置。

[JAVA]架构问题探讨1

9. 遇到的问题

9.1 解决项目的单元测试问题

  • 解决单元测试目录的识别问题

把test的根目录->“Mark Directory as ” -> Test Source root

  • 解决单元测试的代码自动产生的问题,安装插件:“junitgenerater v2.0”
    [JAVA]架构问题探讨1
  • 解决产生的代码的目录问题。把单元测试的目录放到test的目录下。
${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}
复制代码
原文  https://juejin.im/post/5d69e6f55188256bf611a285
正文到此结束
Loading...