此时为了能够让应用尽量满足用户的可变需求,于是很多人开始开发一些框架来对页面和其中的内容进行定制,比如让布局由某一个子程序模块来完成,并且做到可配置,这样,即使用户提出需求也容易做到了。...Portlet Container:Portlet容器,可以存放和运行无数个Portlet,每一个Portlet容器都拥有它自己的虚拟机环境。...Portlet Instance:Portlet实例,一个Portlet对象,能够放置在多个页面中显示相同的状态。...个性化与定制:当多个应用的内容被集成到一个入口中显示的时候,用户可能并不关心所有的内容,此时用户可以将他所关心的内容在页面中进行排版定制,并且保存下来,以备下次访问时继续保持他们最感兴趣的样子。...如上所述的就是Portal的一些概念,那么接下来我们需要知道的就是支持Portal的服务器(JBoss Portal)如何获取、安装、配置,我们又如何在这样的服务器中编写我们自己的Portlet页面和Portlet
bean实例).这意味着如果你有两个或更多上下文,所有这些上下文都由同一Java的类加载器管理(因为在同一个jvm环境中),则可能会有多个给定bean的实例。...而是根据传输的参数执行一些操作(作为HTTP请求参数)。 另一方面,我们可以通过状态bean管理一些状态。比如购物车bean,假如它是一个单例,那么两个不同消费者购买的产品将被放置在同一个对象上。...5. global session 该部分主要是描述portlet的,详情可以Google更多关于portlet的相关信息。...它们基于portlet容器,可以像servlet一样处理HTTP请求。但是,与servlet不同,每个portlet都有不同的会话。...在这种情况下,Spring提供了一个名为global-session的作用域。通过它,一个bean可以通过应用程序中的多个portlet共享。 至此,我们解释了请求和面向会话的作用域。
而Spring的单例作用域,是基于每个容器,每个Bean只有一个实例 这意味着,如果开发者根据一个类定义了一个Bean在单个的Spring容器中,那么Spring容器会根据Bean定义创建一个唯一的...bean实例).这意味着如果你有两个或更多上下文,所有这些上下文都由同一Java的类加载器管理(因为在同一个jvm环境中),则可能会有多个给定bean的实例。...而是根据传输的参数执行一些操作(作为HTTP请求参数)。 另一方面,我们可以通过状态bean管理一些状态。比如购物车bean,假如它是一个单例,那么两个不同消费者购买的产品将被放置在同一个对象上。...#5. global session 该部分主要是描述portlet的,详情可以Google更多关于portlet的相关信息。...它们基于portlet容器,可以像servlet一样处理HTTP请求。但是,与servlet不同,每个portlet都有不同的会话。
Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。 使用Spring框架能带来哪些好处?...所有范围的名称都是自说明的,但是为了避免混淆,还是让我们来解释一下: singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean...Session:与请求范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。...global-session:global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。...如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。 全局作用域与Servlet中的session作用域效果相同。 什么是AOP?
在系统开发中,有些对象其实只需要一个,比如说:线程池、缓存、日志对象等。在 Spring 框架中,就大量应用到了单例设计模式。...global-session: 全局 session 作用域,仅仅在基于 Portlet 的 web 应用中才有意义,Spring5 已经没有了。...Portlet 是能够生成语义代码 (如:HTML) 片段的小型 Java Web 插件。它们基于 Portlet 容器,可以像 servlet 一样处理 HTTP 请求。...但是,与 servlet 不同,每个 Portlet 都有不同的会话。...,我们注册到单例注册表中。
它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。这些模块包括:核心容器、数据访问/集成、响应式 web 编程、AOP(面向切面编程)、工具、消息和测试模块。 ...下图对应的是Spring 4.x的版本,目前最新的5.x版本中Web模块的Portlet组件已经被废弃掉,同时增加了用于异步响应式处理的WebFlux组件。...但是与Servlet不同,每个Portlet都有不同的会话。 追问2:Spring中的bean生命周期? Bean容器找到配置文件中Spring Bean的定义。...也可以采用ThreadLocal解决线程安全问题,为每个线程提供一个独立的变量副本,不同线程只操作自己线程的副本变量。 ...ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。
bean 的作用域有哪些 Singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。 Prototype : 每次请求都会创建一个新的 bean 实例。...Global-Session: 全局 session 作用域,仅仅在基于 portlet 的 web 应用中才有意义,Spring5 已经没有了。...Portlet 是能够生成语义代码(例如:HTML)片段的小型 Java Web 插件。它们基于 portlet 容器,可以像 servlet 一样处理 HTTP 请求。...但是,与 servlet 不同,每个 portlet 都有不同的会话。 单例 bean 的线程安全问题 大部分时候,我们并没有在系统中使用多线程,通常很少有人会关注这个问题。...常见的有两种解决办法: 在 Bean 对象中尽量避免定义可变的成员变量(不推荐)。 在类中定义一个 ThreadLocal 成员变量,将需要的可变成员变量保存在 ThreadLocal 中(推荐)。
对架构的审视,对选型和设计的反思,不仅仅要在产品初创时期,更要在产品发展的整个过程中进行,团队做同类型产品的能力就是这样在不断总结和自我批评中成熟的。...Portlet 给各个局点的不同定制版本带来了相当的页面定制灵活性,不懂 jsp 的管理员都可以按照自己的要求部署页面,通过简单的选择和拖动,将一个个内容丰富的频道展现出来。...Portlet 规范作为一种聚合展现行为的抽象,通过组件化这样一种独立平台的形式,将页面控制聚合流程从业务页面展现和业务流程处理中剥离出来,开发人员得以将更多的精力聚焦在业务开发上面。...3、通过 ajax 方式聚合 Portal 位于不同 war 包内的管理台页面。 本意是想让不同的管理台页面随着不同的 Portal 接入渠道分离发布,在展现时在页面上进行简单集成。...由展现的简易性,而且需要定制的基线版本,决定了我们的 UI 框架应该简单;并且由于开发成员普遍前端能力欠佳,决定的我们的 UI 框架应当便于控制和管理,不应暴露过于复杂的界面行为给普通开发人员。
通过信息实时获取、统一集中化、主动推送性、应用个性化来实现对信息内容的有效利用。 ? 现状 系统中的功能模块众多,缺少统一个用户信息门户系统以方便用户使用。...门户的整体规划及框架设计需要具备可扩充性,前台页面设计能保证在增加widget容器后不会破坏网站的整体结构。后台设计也需要方便灵活修改。 核心功能模块 ?...功能 描述 内容聚合 能够把各种不同应用的内容聚合到一个统一的页面呈现给用户。 基于角色的视图定制 能够基于组织机构中不同的用户的角色生成不同的视图内容。...例如,小王喜欢淡蓝色的格调,并且投资股票,则他可以选择一个淡蓝色风格的主题,并且使用一个已经定制好的股票portlet,允许小王设定此portlet的自动刷新时间和自选股等。...一个门户主页可以有多个Widget,通过不同的Widget可以在一个界面上分别显示来自不同来源的信息。
在这篇文章中,我们将挑选一些Liferay DXP的新功能,并对它们进行详细的探讨。 模块化: 这实际上意味着Liferay的每个模块(特性)现在都是联合的,可以从核心Liferay安装中分离出来。...例如,您的安装上运行了Wiki(特性)的一个版本,您现在可以根据该特性中的新需求进行更改,使用不同的版本控制,并且应用程序可以使用经过修改的版本控制服务。...现在每个portlet都以微服务的形式与另一个portlet通信,这与早期版本中的IPC不同。所有portlet属性现在都很容易公开,并且可以跨portlet使用。...其他受益最大的业务是功能推出的速度,这是成功的关键。 我们经常改变应用程序及其不同的功能 公开和访问服务 DXP允许创建更小、更易于管理的模块,并将服务导出到外部使用。...最初,liferay的主要核心类只能通过EXT或hook覆盖。现在在Liferay 7中,所有东西都是一个包,你只需要覆盖你想要的包。这使得定制更快,并且只定制我们想要的。
Spring支持多种作用域,每种作用域都有其特定的应用场景和生命周期管理策略。...由于每个支付订单都是独立的且需要保持状态信息(如订单金额、支付状态等),因此可以选择将其配置为prototype作用域的Bean。...优缺点分析优点:持久化会话状态:每个用户会话创建一个实例,可以用来保存会话级别的数据。线程安全:每个用户拥有独立的实例避免了并发冲突。缺点:资源消耗:长时间的会话可能导致内存占用增加。...七、总结与展望通过本文的深入剖析和技术实践展示,我们可以对Spring中Bean的作用域有一个全新的认识。...在未来的发展中,随着Java EE技术和Web应用程序的不断演进,Spring框架中的Bean作用域概念也将继续丰富和完善以适应更多应用场景的需求。
PORTAL是什么 portal是一个基于web的应用,它能提供个性化,单点登陆,不同源的内容聚合,和信息系统的表示层集中。聚合是整合不同web页面源数据的过程。...portal页面本身代表一个完整的标记文档,并且聚集了一些portlet窗口。除portlet外,页面可能还包含导航区和标志区(navigation area and banners)。...通常,portlet中的动作会被portal接受,从而用户与portlet中的内容交互(比如点击portlet中的链接,提交form),提交到portlet的目标。 ...对不同的用户,根据其配置,同一个portlet会产生不同的内容。...在收到请求后,portal 判断满足请求的portlets 列表。Portal 通过portlet 容器,调用portlets。
spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可以简洁明了,下面举个例子,要在普通java工程使用spring...接下来我们以spring 3.2.17.RELEASE版本为例,介绍spring框架结构,spring 4稍有不同(去掉Spring3的struts的呢个),详情见官网。...”,每个jar有一个不同的“artifactId”,另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar...web web部分包含4个模块 spring-web:基础web功能,如文件上传 spring-webmvc:mvc实现 spring-webmvc-portlet:基于portlet的mvc实现 spring-struts...到这里,spring3的介绍就完了,看着这些图我相信你在maven中配置spring依赖时不会再混乱了。
spring的依赖,只有拷贝..... spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可以简洁明了,下面举个例子...接下来我们以spring 3.2.17.RELEASE版本为例,介绍spring框架结构,spring 4稍有不同,将在最后介绍 spring官网给出了一张spring3的结构图 图中将spring分为...5个部分:core、aop、data access、web、test,图中每个圆角矩形都对应一个jar,如果在maven中配置,所有这些jar的“groupId”都是“org.springframework...”,每个jar有一个不同的“artifactId”,另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar...l spring-context-support:spring额外支持包,比如邮件服务、视图解析等 它们的依赖关系 到这里,spring3的介绍就完了,看着这些图我相信你在maven中配置spring
spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以,搞清楚它们之间的关系,配置maven依赖就可以简洁明了,下面举个例子,要在普通java工程使用spring...接下来我们以spring 3.2.17.RELEASE版本为例,介绍spring框架结构,spring 4稍有不同,将在最后介绍 spring官网给出了一张spring3的结构图 ? ...图中将spring分为5个部分:core、aop、data access、web、test,图中每个圆角矩形都对应一个jar,如果在maven中配置,所有这些jar的“groupId”都是“org.springframework...”,每个jar有一个不同的“artifactId”,另外,“instrumentation”有两个jar,还有一个“spring-context-support”图中没有列出,所以spring3的jar...web web部分包含4个模块 spring-web:基础web功能,如文件上传 spring-webmvc:mvc实现 spring-webmvc-portlet:基于portlet的mvc实现
在前面的一篇随笔《基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理》介绍了菜单模块的处理,主要介绍如何动态从数据库里面获取记录并构建菜单列表。...1、菜单的显示及各种Bootstrap图标 我们从下图可以看到,为了菜单的美观,每个菜单项(这里分了三级菜单)都有一个图标,虽然大小不同,我们利用Bootstrap的图标,都是从Bootstrap图标库里面的内容...Bootstrap图标库里面分为了三类内容: Font Awesome:Bootstrap专用图标字体,Font Awesome 中包含的所有图标都是矢量的,也就可以任意缩放,避免了一个图标做多种尺寸的麻烦...portlet-body" id="grid_body"> 动态获取并生成HTML代码显示在界面上的处理脚本如下所示。...$("#i_WebIcon").attr("class", classname); 当然我们选择图标的时候,提供一个弹出的对话框显示分类不同的图标,让用户选择后返回即可。 ?
Prototype(原型):每次请求时,容器都会创建一个新的Bean实例。这意味着每次请求都会得到一个不同的Bean实例。 Request(请求):每个HTTP请求都会创建一个新的Bean实例。...这通常在Web应用程序中使用,确保每个请求都有独立的Bean。 Session(会话):每个用户会话(session)都会创建一个新的Bean实例。...这同样适用于Web应用程序,确保每个用户拥有独立的Bean。...下面是一个基于Spring的示例代码,演示了如何定义Bean、配置Bean的生命周期和作用域,以及如何在应用程序中使用它们。 首先,我们创建一个AppConfig类,用于定义Bean和配置信息。......"); } } 在实际应用中,你可以通过调整@Scope注解的参数来修改Bean的作用域,也可以根据需要添加更多的初始化和销毁逻辑。
近接触到了 Mason,并且了解到了它基础之上的一个 MVC 框架实现,随即联想到做网站以来接触到的各种各样的页面聚合的场景,颇有意思。...页面聚合本身是一种 “分而治之” 的思想,把复杂的页面分割成可以被重用和独立维护的部分,这些部分的来源灵活,可以来自同一个 web app 中,也可以来自不同的域;可以聚合独立的子页面(页面集成),也可以聚合数据...它定义了 portlet 和 portlet 容器之间的合约,让 portlet 实现个性化、表示和安全的 api 集。规范还定义了怎样在 portlets 应用中打包 portlets。...Portlet 就能实现这一需求,Portlet 是由 Portlet 容器聚合的,用户看到的是一个单一和完整的页面,他并不了解页面中的一个个 portlet 栏目到底来自何方。...Portlet 页面组装过程: Portlet 由于在聚合中采用了两次请求转发的方式(一次 Action 请求、一次 render 请求),导致效率天然不高。
Portlet 规范定义了全局 Session 的概念,它被所有构成某个 portlet web 应用的各种不同的 portlet 所共享。...在 OOP 中, 我们以类(class)作为我们的基本单元, 而 AOP 中的基本单元是 Aspect(切面) 6.2. 什么是 Aspect?...指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处。 concern 是我们想要在应用程序的特定模块中定义的行为。...例如,日志记录,安全性和数据传输是应用程序几乎每个模块都需要关注的问题,因此它们是跨领域的问题。 6.7. AOP 有哪些实现方式?...它与普通的 ApplicationContext 在解析主题和决定与哪个 servlet 关联的能力方面有所不同。 更多Java技术文章,尽在【好好学java】网站。
领取专属 10元无门槛券
手把手带您无忧上云