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的坏气味。

Android Settings 设置Preference置灰显示 使Preference置灰显示,不能点击。先调用Preference的setEnabled(false),再调用setShouldDisableView(true); 如果使置灰项恢复正常可点击,可调用setEnabled(true)。 阅读详情

相关推荐

CentOS 7 离线升级 OpenSSH 9.9p2 保姆级教程(含依赖包下载与常见报错解决)

本文提供了一份详尽的CentOS 7系统离线升级OpenSSH至9.9p2版本的完整教程。针对无外网环境,重点讲解了依赖包(尤其是OpenSSL 3.x)的离线下载与编译部署,并深入解决了编译过程中常见的“libcrypto.so缺失”等动态库链接错误。教程涵盖从环境准备、源码编译、服务配置到系统集成的全流程,最后还提供了关键的回滚方案与应急预案,是运维人员在内网环境中进行安全加固的实用指南。

weixin_29248313的博客 325

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

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

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

SECS/GEM协议库及开源代码

以下是在开发SECS/GEM协议过程中,在网络上搜集协议实现资源,希望对SECS/GEM协议感兴趣的同学能有所帮助。 开源代码 freesecs FREESECS 是一个开源的SEMI SECS协议库,采用C++语言实现,可运行于Linux, MacOS X, NetBSD。 实现协议:E37.1、E5 开源地址:freesecs download | SourceForge.net 下载地址:https://download.youkuaiyun.com/download/BT_LEO/24305429

码农的历程 9944

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

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

春天的波菜 1746

影刀初级考试操作题2

题型E主要考察了Excel的操作,总体上难度不大,流程也很少。有些细节地方比如是追加还是覆盖,多试几次就没问题了。

weisili2012的博客 1万+

使用 Simulink 搭建一个地震信号反射系数反演与滤波联合仿真的系统模型

《Simulink地震信号处理仿真指南》摘要:本文详细介绍了使用Simulink进行地震信号反射系数反演与滤波联合仿真的完整流程。从创建模型、生成含噪合成地震记录(包含子波卷积与随机反射系数),到设计滤波模块(带通/小波/自适应滤波)和实现反演算法(Wiener-Hopf方程/RLS方法),最后通过可视化模块分析结果。教程涵盖理论准备、7个实施步骤、优化建议及实际应用场景,为地震勘探、地质调查等领域提供标准化的信号处理仿真方案,特别适合需要掌握地震信号反演与实时滤波技术的工程人员学习。

amy_mhd的博客 114

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

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

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

用Python绘制DCA曲线详解及示例代码

在这篇文章中,我们将详细解释如何使用Python绘制DCA曲线,并提供示例代码。通过使用上述的示例代码和解释,你可以自己尝试不同的投资金额、期数和增长率来绘制自定义的DCA曲线。通过运行上述代码,我们将得到一个绘制了DCA曲线的图表。该图表将显示出DCA投资策略在给定投资金额、投资期数和增长率下的投资价值随时间的变化情况。在上述代码中,我们使用一个循环来计算每个投资期的DCA曲线值。现在,我们可以使用上述函数来计算DCA曲线的值,并将其绘制成图表。最后,我们返回计算得到的DCA曲线值列表。

TechPr的博客 1410

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

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

m0_73859807的博客 651

【WRFDA教程】客观分析(OBSGRID)详解

客观分析(OBSGRID)详解

WW、forever的博客 1133

【毕设保姆级指南】基于YOLOv8的DAGM 2007工业缺陷检测系统从搭建到落地

本教程基于YOLOv8算法实现DAGM 2007工业缺陷检测系统,包含数据处理、模型训练和可视化界面开发全流程。首先对DAGM数据集进行格式转换和划分,然后通过YOLOv8训练工业缺陷检测模型,最终构建PyQt5交互界面实现缺陷可视化检测。该系统可用于智能制造中的产品质量控制,帮助快速定位工业产品缺陷,提升检测效率和准确性,为工业质检提供高效解决方案。

LXY_LOVE36的博客 182

Maven进阶

Maven进阶

lisus2007的专栏 1238

算法真的是个很有用的东西,通过python或者golang实现对N张图片的自动排版,每张图片的长和宽都不一样,有的是横图,有的是竖图,最终需要生成一张完整的矩形图片

算法真的是个很有用的东西,通过python或者golang实现对N张图片的自动排版,每张图片的长和宽都不一样,有的是横图,有的是竖图,最终需要生成一张完整的矩形图片。

代码讲故事 503

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

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

李阿昀的博客 5489

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

maven 的分模块开发

maven 的分模块开发

weixin_45428910的博客 1655

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

【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、付费专栏及课程。

余额充值