Struts2源码浅析-Container

西门子博图指令(定时器操作三) 西门子博图定时器中复位定时器功能指令介绍 阅读详情

Container容器接口定义

public interface Container extends Serializable {

  /**
   * Default dependency name.
   */
  String DEFAULT_NAME = "default";

  /**
   * 对当前对象 执行依赖注入
   * 引用了@Inject注解的 方法 字段 构造器 参数 
   * @param o 
   */
  void inject(Object o);

  /**
   * 创建实例 然后再依赖注入
   */
  <T> T inject(Class<T> implementation);

  /**
   * 返回容器中 类型 和名称匹配的bean
   */
  <T> T getInstance(Class<T> type, String name);

  /**
   * 返回容器中 类型匹配的bean  可能是多个
   */
  <T> T getInstance(Class<T> type);
  
  /**
   * 返回容器中 类型匹配的 bean名称 可能是多个 
   */
  Set<String> getInstanceNames(Class<?> type);

  /**
   * Sets the scope strategy for the current thread.
   */
  void setScopeStrategy(Scope.Strategy scopeStrategy);

  /**
   * Removes the scope strategy for the current thread.
   */
  void removeScopeStrategy();
}

容器的实现类

class ContainerImpl implements Container {
}

容器的创建 是由ContainerBuilder create方法完成

	public Container create(boolean loadSingletons) {
		ensureNotCreated();
		created = true;
		//factories 保存了 bean的定义  常量的定义
		//ContainerImpl factories  factoryNamesByType
		final ContainerImpl container = new ContainerImpl(new HashMap<Key<?>, InternalFactory<?>>(factories));
		if (loadSingletons) {
			container.callInContext(new ContainerImpl.ContextualCallable<Void>() {
				public Void call(InternalContext context) {
					for (InternalFactory<?> factory : singletonFactories) {
						factory.create(context);
					}
					return null;
				}
			});
		}
		// xml配置 bean节点 属性static 为true  默认为false
		//com.opensymphony.xwork2.config.providers.XmlConfigurationProvider#register() line 210
		container.injectStatics(staticInjections);
		return container;
	} 
AI OS与LLM as OS:人工智能操作系统的崛起 近年来,随着大语言模型(Large Language Model, LLM)技术的突飞猛进,人工智能领域掀起了新的革命浪潮。以ChatGPT、GPT-4等为代表的LLM模型展现出了惊人的自然语言理解和生成能力,使得人机交互前所未有地拟人化、情境化。在此背景下,业界开始探索将LLM作为操作系统(Operating System, OS)的可能性,由此催生出"AI OS"和"LLM as OS"的概念。本文将深入解读这两个前沿概念,分析其内涵、技术原理、应用前景及面临的挑战。 阅读详情

相关推荐

SPSS_Process—简单&平行&链式中介模型

本篇文章介绍采用SPSS的插件Process对简单中介、链式中介、平行中介模型进行检验的操作方法及结果解读。

m0_54401011的博客 4万+

struts2_源码学习_Container

续Dispatcher(1) (PS:我终于搞明白 一点了 T-T 参考文章:https://www.cnblogs.com/huashui/p/3191886.html) 目录 Container接口 对象的注入依赖 对象注入的实例 获取对象实例 Container接口 package com.opensymphony.xwork2.inject; public in...

Onion的博客 443

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第一部分

环形谐振器教程的第 1 部分使用 MODE 来设计和仿真环形谐振器。 自由光谱范围 (FSR) 和品质因数 (Q 因数) 是这种面向片上通信应用的基于绝缘体上硅 (SOI) 波导设计的关键性能指标。

weixin_45719141的博客 3万+

Struts2容器Container源码阅读笔记

container是容器的意思,这让人很容易联想到java的Collection接口下的集合类,然而container并不是一个数据结构,我认为container其实是一个工厂,可以对对象的生命周期进行管理,,使对象的创建与业务逻辑的代码分开,同时可以避免对象的频繁的无用的创建,它可以将从配置文件中读取到的信息,通过依赖注入,缓存成key,value形式,也可以通过getInstance()通过反射

Joseph_Geeker的博客 1095

标准恢复二极管整流器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

报告页数: 150 图表数: 100 报告价格:¥16800 本文研究全球与中国市场标准恢复二极管整流器的发展现状及未来发展趋势,分别从生产和消费的角度分析标准恢复二极管整流器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。 主要生产商包括: Yangzhou Yangjie Vishay Intertechnology Power Semiconductors Inc Nexperia B

Fj69258的博客 5848

文献计量VOSviewer分析知网文献基本操作及实用技巧

本教程旨在为读者提供一个关于VOS viewer的初级使用指南。VOS viewer是一个强大的科学研究可视化工具,主要用于构建和可视化科学地图。它能够处理大规模的科研数据,包括文献引用、共引、共词、共作者等信息。无论你是科研人员,还是数据分析师,甚至是研究生,都能在这个教程中找到使用VOS viewer的有效方法。我们将一步步教你如何使用这个软件,以及如何利用它进行科研数据的可视化。

Jia_n的博客 8766

Struts2(XWork)中的Container 一

本文是>的学习笔记 在进行面向对象编程的时候,我们不可避免地要使用继承实现等等java提供的语法支持。但是复杂的对象关系也为对象生命周期的管理带来了至少以下两个问题。 1 程序运行时,应如何双肩我们所需要的对象。 2 当创建一个对象后,如何保证与其相关联的依赖关系也正确的被创建处理。 好在先辈们已经给我们想好了出路------在程序中引入一个额外的编程元素:容器(Container)

程序员小董的专栏 1733

Windows 24H2升级后eNSP AR_40报错40?VirtualBox虚拟化修复指南

虚拟化技术通过Hypervisor在操作系统与硬件间建立抽象层,使虚拟机能够共享物理资源。其核心原理依赖CPU的VT-x/AMD-V指令集,而Windows 24H2对内核隔离与驱动签名的强化会直接占用或拦截这些虚拟化资源。在工程实践中,VirtualBox作为Type-2型Hypervisor,常因内存完整性开启或版本过旧导致虚拟网卡创建失败,进而引发设备启动中断。典型场景包括网络仿真实验、多系统测试环境搭建等。当eNSP的AR_40路由器依赖VirtualBox引擎时,24H2的安全策略变更便会触发错误

weixin_34375251的博客 216

struts2_源码学习_Dispatcher(1)

续Logging System 目录 Dispatcher 第一步:创建ConfigurationManager。 第二步:往ConfigurationManager添加一个FileManagerProvider 第三步:往ConfigurationManager添加一个DefaultPropertiesProvider 第四步:往ConfigurationManager添加一个Str...

Onion的博客 568

【ARM Trace32(劳特巴赫) 高级篇 20 -- SNOOPer 使用介绍】

在 Lauterbach TRACE32 调试系统中,Snooper是一种特殊的监视工具,它能够在不中断处理器执行的情况下监视和记录特定内存地址的数据变化。这对于系统级调试、性能分析、数据流监视以及实时系统的问题追踪特别有用,尤其是在无法使用中断的情况下。当你设置了一个或多个Snooper时,TRACE32 硬件将不断地监视指定的内存地址,一旦发生了读写操作,就会将相关信息记录下来。这样你就可以看到某个地址的数据是什么时候以及如何被修改的,而不会影响目标系统的运行。

CodingCos的博客 2765

【从零到一】Jetson Nano上YOLOv5部署完全攻略:零基础小白也能玩转边缘AI推理

文章摘要: 本文详细介绍了在Jetson Nano边缘设备上部署YOLOv5目标检测模型的完整流程。从硬件准备、系统镜像烧录、基础环境配置,到CUDA/cuDNN验证、Python虚拟环境搭建及PyTorch安装,逐步指导开发者完成部署准备。教程兼顾理论原理与实践操作,提供Python和C++两种实现方案,并涵盖TensorRT优化、实时检测等生产级应用场景,帮助零基础开发者快速掌握边缘AI推理技术,实现高性能目标检测应用。

LXY_LOVE36的博客 368

struts2_源码学习_目录

从web.xml部署文件的配置可以看出StrutsPrepareAndExecuteFilter时一切action请求的必经之类。 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www...

Onion的博客 244

华为OD机试真题 新系统 9月16号 【园区基站节能部署规划】

华为OD机试真题 新系统【园区基站节能部署规划】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【园区基站节能部署规划】多语言题解。

qq_45776114的博客 356

Struts2源码分析-StrutsPrepareAndExecuteFilter入口类

Struts2源码分析-StrutsPrepareAndExecuteFilter类实现了Filter接口,并且配置在web.xml文件中,所以Struts2本质上是一个基于Java web规范三大组件之一的过滤器,根据init()和doFilter()分成了两条主线,一条初始化线,一条运行期线,先看看init()方法,这个方法会在Servlet容器启动时触发,Configuration 就是配置管理对象,主要负责对配置元素进行管理,而ContainerProvider和PackageProvider就是配

ng1213的博客 494

NTscan扫描工具

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

struts2源码分析1

struts2源码版本2.5.14.1----------------------------------------------------------------------------------------------------------------------------从struts2 中的web.xml的启动配置可以看出,首先分析的是FilterDispatcher 这个过滤器类...

vic_v1c的博客 293

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Struts2源码浅析-初始化

StrutsPrepareAndExecuteFilter实现了Filter接口  init方法为初始化入口 StrutsPrepareAndExecuteFilter init方法  public void init(FilterConfig filterConfig) throws ServletException { //初始化辅助类 类似一个Delegate

天行健,君子以自强不息 6481

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

OSGI环境中集成struts2

需求: 环境: 思路:

南洋小木匠的专栏 635

struct2源码解读(8)之container原理

struct2源码解读之container原理 container翻译成中文的意思是容器,通俗地来说,就是struct2的运行环境。这个所谓的运行环境,有点类似于一个容器,里面装着各种对象,当struct2处理aciton请求的,就会容器中取相应的对象。下面探讨下container的实现原理。container是一个接口,主要有两个方法,一个是inject() 一个是g...

weixin_34226182的博客 276

struts2_源码学习_Dispatcher(2)

续:Container 目录 初始容器bootstrap 真正容器container 运行时配置信息 其他 上一篇文章已经介绍完Container这个容器类,接下来我们继续Dispacher的初始化工作,也就是获得容器了。 Dispacher.init() ... Container container = this.init_PreloadConf...

Onion的博客 366

【struts2】xWork容器之Container核心bean对象管理容器讲解

xWork框架作为struts2的核心框架知识,驱动整个struts2的业务链.那么xWork容器是如何来管理对象的呢?首先我们来看看container源码: public interface Container extends Serializable { /** * Default dependency name. * 定义默认的对象获取标识

如切如磋,如琢如磨,臻于至善。 804

Struts2源码浅析-ConfigurationProvider

ConfigurationProvider接口 主要完成struts配置文件 加载 注册过程 ConfigurationProvider接口定义 [java] view plaincopyprint?   public interface ConfigurationProvider extends ContainerProvider, PackageProvider {...

weixin_34185364的博客 198

Struts2容器详解---IoC源码分析

 Struts2作为一个Web MVC框架,自身提供了一个IoC容器,实现对对象的生命周期管理,核心功能就是将对象注入到容器以及从容器中获取对象。通过对struts2容器的分析,学习和探讨一下IoC的思想。 Container接口定义 package com.opensymphony.xwork2.inject; public interface Container extends

musa875643dn的专栏 840

struts2 常量配置详解

1,struts.action.extension 作用:设置为htm的时候, 把url后缀为htm的映射成为action 源码:org.apache.struts2.dispatcher.mapper.DefaultActionMapper   @Inject(StrutsConstants.STRUTS_ACTION_EXTENSION) public void setExt...

平衡 trade-off 318
上一篇: Struts2源码浅析-初始化
下一篇: Struts2源码浅析-ConfigurationProvider
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值