spring 分模块开发简单实践

ssm分模块开发 环境搭建: 阅读详情

spring 分模块开发

背景
      我们一般采用spring+struts+ibatis的开发模式,使用spring统管业务bean,当项目很大时,面临一个bean命名冲突问题,如果和struts一样,采取分模块的方式,不同的模块有自己的命名空间,将会避免几个并行开发的子系统或模块共用一套bean配置文件时id产生重名的问题。

简单方案
     整个系统所使用的公共bean,例如数据源、事务管理、iBatis或hibernate的引擎、国际化资源文件等,放在一个root context文件中, 构造一个根ApplicationContext实例,作为各子模块的父,这里就看出Spring设计上的易扩展性了,ApplicationContext的构造子允许通过一个父实例来创建。
   
    核心类 ContextHelper ,作为管理器类,如下:
    
 public class ContextHelper {
    private static Map _contexts ;
    private static ApplicationContext _rootContext;
    private static final String ROOT_CONTEXT = "conf/rootContext.xml";
 
   static {
      _contexts = new HashMap();
      try{
        _rootContext = new ClassPathXmlApplicationContext(ROOT_CONTEXT);
      } catch (Exception e) {
        throw new ContextException(e);
      }
   }

   public static synchronized Object getBean(String configName, String beanName) {
      ApplicationContext context = getApplicationContext(configName);
      Object bean = context.getBean(beanName);
      return bean;
   }
   //lazyload
   private static synchronized ApplicationContext getApplicationContext(String  configName) {
     if(_contexts.containsKey(configName)) {
       return (ApplicationContext) _contexts.get(configName);
     }
     //这里规定了模块配置文件的命名规则
     String moduleConfigFile = "conf/" + configName + ".bean.xml";
     String [] configs = { moduleConfigFile};
     ApplicationContext context = new ClassPathXmlApplicationContext(configs,_rootContext);
     _contexts.put(configName, context);
     return context;
   }
 
   //消息资源文件管理

  public static String getMessage(String key,Object[] arg,Locale l){
    return _rootContext.getMessage(key,arg,l);
  } 
}

   需要注意的一点是,各子模块bean配置文件中,如果引用根配置中的bean,不可以使用local属性了,请使用bean=“dataSource“,一开始没注意到这个问题,总报错,无法正确合并,我调试了好久才发现。

ToDo

  上述方案还比较简陋,主要的隐患在于,各模块之间的通信问题,当前的设计比较适用于各模块耦合度较小的情况,如果有一些bean,供几个模块之间共用,势必也需要提至rootContext.xml中配置,大大增加了根文件的复杂性。
  另外,可供改进处还有一个,每个模块应该允许采用多个bean配置文件,允许将dao、service等tier分开来处理,可以通过建立一个properties文件,将模块逻辑名与若干配置文件建立映射关系来解决。我得承认,当前的简版方案在context load上有一些hard code的坏气味。

SpaceMesh Mining 教程 當參與Spacemesh的用戶在完成P盤工作後需要完成兩個部分工作:PoET+PoST,這兩部分均是在不同的規定時間完成,具體可參考後續的時間表。註意!只有PoET和PoST均完成的用戶才可以獲得收益。Spacemesh相關P盤教程:說明:1.Spacemesh每個紀元epoch周期為14天,在8月7日完成PoET的將在8月20日完成PoST,收益將在8月25日後發放(之後用戶收益將每隔14天發放一次) 後續PoET時間為8月7日+N14 **後續PoST時間為8月20日+N。 阅读详情

相关推荐

解决Qt平台插件初始化失败:This application failed to start because no Qt platform plugin could be initialized

本文深入解析了Qt应用程序启动时常见的‘platform plugin’初始化失败报错,指出其核心在于环境变量冲突或多版本Qt共存导致的插件路径混乱。文章提供了从环境变量检查、路径调整到文件补全的完整解决方案,并给出了使用windeployqt工具等预防性开发实践,帮助用户和开发者彻底解决这一经典问题。

weixin_29229261的博客 2205

分模块开发的意义及开发步骤

将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享

宁可枝头抱香死,何曾吹落北风中。 756

RK3588平台-ES8388音频驱动调试与设备树配置实战

本文详细解析了在RK3588平台上调试ES8388音频驱动的实战过程。内容涵盖Linux音频驱动的三层架构(Machine、Platform、Codec),并重点提供了设备树(DTS)的完整配置示例,包括I2C节点、声卡节点及音频路由设置。文章还分享了驱动加载验证、amixer调试命令以及常见问题(如无声、变调)的排查思路,旨在帮助开发者快速完成RK3588与ES8388的音频系统集成。

mango的博客 808

【java】【重构一】分模块开发设计实战

分模块开发,结合之前文章进行从头开始

春天的波菜 1746

Flutter 中使用蓝牙插件报错,说没有权限怎么解决

2、在build.grale里面更改一下版本号,我修改的是targetSdkVersion这个版本号,需要根据你自己的版本进行更改,记得更改之后先flutter clean一下再run。搞了一晚上,没搞出来,第二天用同事手机测试发现他手机可以,我手机还是不行,才发现是Android版本问题,需要修改两处地方。废话不多说,咱先看报错信息。

zzj17637822814的博客 2289

CST仿真微带贴片天线学习笔记

谐振频率为3.48GHz,基板采用Rogers RT5880板材,介电常数2.2,损耗角正切0.0009,厚度1.57mm,馈电方式为同轴馈电。

qq_36521926的博客 9433

知识点19--springboot多模块开发

本篇向大家介绍本系列demo教程中最后一个知识点就是多模块开发,多模块听着高大上,其实就是依靠maven相互之间的依赖,把多个模块融合进一个项目中而已,说的再直白一些就是像日常开发那样把其他模块导入一个模块,这个模块用来启动并调用所有模块而已。下面通过一个例子整体走一遍模块化开发。第一步:建立父工程,注意通常情况下,父工程一定是一个spring initializr模式下创建出来的,但同样存在少量的人会先创建maven在转换成spring boot项目,这个其实就是手动添加所有依赖而已。

别人笑我太疯癫,我笑他人看不穿。 8423

Python全栈入门到实战【基础篇 04】核心基础:变量与4种基础数据类型(int/float/str/bool)

本文介绍了Python编程中的变量和四种基础数据类型,作为后续所有语法的入门前提。变量是数据的“容器”,解决数据复用问题,而数据类型决定数据能进行的操作。文章详细讲解了变量的定义语法、命名规则(强制语法和推荐风格)、赋值与修改原理,并通过实操示例展示其应用场景。正确使用变量可以提升代码复用性、简化修改并增强可读性,是编程效率的核心原则。掌握这些基础知识能避免90%的新手语法错误,为学习更复杂的Python语法打下坚实基础。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4325

JAVA之 Maven进阶 分模块开发与设计 依赖管理 聚合 继承 属性 多环境配置与应用 私服

路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。右上角点登录,会提示密码所在的地址,然后找到后输入密码,重设新密码就可以了。声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源。当设置为true的时候,就对外隐藏了,也就是不具有依赖传递性了。特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。这部分里的依赖,是子工程可以选择是否使用的依赖。素组仓库是小组内自己使用。

m0_73859807的博客 651

大模型长对话中上下文无法承载全部历史,如何压缩或提取重点

如果说截断和滑动窗口是“硬性”压缩,那摘要生成技术就显得“软”多了,也更接近于智能化的解决方案。它的思路是:不直接丢弃历史,而是通过自然语言处理(NLP)技术,把冗长的对话记录浓缩成一段简短的摘要,保留核心信息。这样既能大幅减少token数量,又不至于丢失关键内容。这种方法通常会借助预训练模型,比如BART或T5,它们擅长从长文本中提取重点内容。

大模型大数据攻城狮的专栏 1589

STM32实现等精度测频

上一章介绍了利用STM32的TIM的捕获功能实现频率测量的方法,但测量误差受被测信号频率的影响,不适合测量频率变化较大的。本章将介绍等精度测频的方法以及STM32的实现。STM3...

zhang062061的专栏 3457

Maven进阶

Maven进阶

lisus2007的专栏 1238

Android AVB 分析(十三)dm-verity 设备是如何映射的?

在上一篇《Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介》介绍 dm-verity 原理的时候,作者提供了一个 dm-verity 演示的例子。本篇我们基于 AOSP 源码 `android-13.0.0_r41` 实际编译生成的 Google Pixel 7 (“panther”) 设备的 system 分区镜像进行 dm-verity 设备验证实战。

洛奇看世界 2438

Spring入门第三讲——Spring中Bean的配置与管理以及分模块开发的配置

在《Spring入门第一讲——Spring框架的快速入门》这一讲中,我们已经快速入门了Spring,现在咱就在第一讲的基础上,讲解一下Spring中Bean的相关配置和管理,不过这都是基于XML文件的这种方式哟!温馨提示:初学者如果第一次学习Spring这个框架,那么还是建议先入门Spring再说,因此初学者可以看看我写的Spring入门第一讲,而在本讲中我写的一些代码都是基于第一讲基础上的,初学...

李阿昀的博客 5489

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

maven 的分模块开发

maven 的分模块开发

weixin_45428910的博客 1655

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring的分模块开发的配置

分模块开发配置 一、在加载配置文件的时候,加载多个 准备两个配置文件分别为 applicationContext.xml applicationContext2.xml package com.itzheng.spring.demo5; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlAp

程序员猫爪 637

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Spring 篇】Maven 工程的巧妙玩法:分模块构建揭秘

分模块构建是 Maven 中一项非常强大的功能,通过这个技巧,我们能够更加灵活、有序地组织我们的项目结构。在这篇文章中,我们逐步了解了如何创建一个使用分模块构建的 Maven 项目,从项目的创建、模块的配置到模块之间的依赖管理,每一步都是为了构建一个更加有条理和易维护的工程。分模块构建不仅仅适用于大型项目,即使是小型项目也可以受益匪浅。通过模块的划分,我们能够更好地控制项目的复杂性,使得每个团队成员都能够专注于自己负责的部分,提高开发效率。此外,分模块构建也为未来的扩展和维护提供了更多的可能性。

繁依Fanyi的博客 1382

SSM(Spring+SpringMVC+MyBatis)基本框架的分模块开发项目搭建

@TOC 毕业实习-SSM(Spring+SpringMVC+MyBatis)基本框架的分模块开发项目搭建 分模块开发的意义 现在流行微服务,分模块开发直观的好处是项目解耦合更加彻底,各个层或组件可以独立开发和优化。只要通信接口规范不变。组件之间都可以正常工作。同时可以根据组件的场外景单独布署。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增...

jinglouyan的博客 528

Spring Boot 分模块:从数据库到前端接口

数据库表设计 - Spring Boot 分层编码 - 接口测试与验证--分层架构(Controller → Service → Mapper)- - Controller层 - 作用:接收HTTP请求,返回响应-- 核心注解:@RestController、@GetMapping-- 示例:UserController.getAllUsers()-- Service层 - 作用:处理业务逻辑,调用Mapper-- 核心注解:@Service、@Autowired。

2301_80194233的博客 1156

3-Spring的分模块开发(Context的分级机制)

spring 分模块开发使用不同的两个 context.xml 配置文件new出来的Context就是不同的Context他们之间不可以进行Bean的互访.只能访问相同的父级Context.背景      我们一般采用spring+Struts+ibatis的开发模式,使用spring统管业务bean,当项目很大时,面临一个bean命名冲突问题,如果和struts一样,采取分模块的方式

deadswan000的专栏 763

idea网页系统的分模块开发和分布式开发

分模块开发 首先了解一下什么叫分模块开发,顾名思义,就是将一个项目的每一个模块都当作一个项目来进行。 前面我们了解到,一个基础的springMVC框架分为bean-dao-service-controller层四个模块,在这里我们将会把他们分开来分别创建子项目,分别编写然后实现整个工程的整合 步骤: 1.创建空的maven工程作为parent父工程 2.导包,即导入所有SSM要用到的jar包。这部...

Jingjingjng0504的博客 448

Spring学习笔记---Spring的分模块开发的配置

分模块配置 1.在加载配置文件的时候,加载多个 例如把applicationContext.xml配置文件中的关于集合配置的部分剪切到applicationContext2.xml中,在加载配置文件的时候,将两个配置文件全部加载。 public class SpringDemo5 { @Test public void demo1(){ ApplicationContext app...

rosinante 333

Maven -- 分模块开发与设计 & 分模块开发示例(拆分SERVICE & 拆分CONTROLLER)

Maven – 分模块开发与设计 & 分模块开发示例(拆分POJO & 拆分DAO) 1. 分模块开发示例 1.1 拆分SERVICE 1.1.1 创建新的模块 ssm_service 1.2.2 复制项目内容 删除多余的内容 补充: 还要删除system目录,刚刚没删干净 1.2.3 修改 ssm_service 模块的 pom.xml文件 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xml

天行健 君子以自强不息,地势坤 君子以厚德载物。 1045

Maven分模块整合SSM

Maven分模块整合SSM 1. maven解决jar包依赖冲突的方式 第一声明者优先原则 哪个jar包坐标的位置在pom.xml中靠上的位置,这个jar包就是先声明的,先声明的jar包坐标下的依赖包,可以优先进入项目中。 maven导入jar包中的一些概念 直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包 传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。 路径近者优先原则 直接依赖路径比传递依赖路径近,那么最终项目进入到jar包回事路径近的直

Eternal_Summer 140

Spring分模块开发

Spring分模块开发  1  在spring里面配置多个内容,造成配合混乱,不利于维护  2 把spring核心配置文件中,一部分配置放到单独的配置文件中,在spring核心配置文件中引入单独     配置文件 3  重新引入一个新的xml文件,这样每个人写的,都可以单独引入。例如user.xml,,这里我把action单独拿了出来 <be

zhupengqq的博客 676

基于SpringBoot构建分模块项目,小白专用

开始先给大家讲一个故事: 客户要做一个内部办公系统项目,项目包含了 前台接待,员工管理,财务结算,库存管理 然后,我们一块做,做完上线。 过了段时间,某个功能需要修改,于是你们一块改改改,上线时,所有功能都暂停使用20分钟,更新版本。 再过了段时间,财务结算需要修改,于是又改改改,上线时,又暂停20分钟,更新版本。 时间过去了,客户又提出,,,,, 客户开始抱怨了,我只是要改某个模块,每次都要所有部门都暂停,损失太大了! 于是,接待系统,员工系统,财务系统,库存系统。四个系统应运而生; 叕一段时间后,客户提

mlh955的博客 2万+
上一篇: eclipse的插件安装及使用技巧[转.备忘]
下一篇: 功夫 一个电影人的诚恳之作
_chage
博客等级 码龄24年 2粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值