Spring中SimpleJndiBeanFactory

embedded/2024/9/20 7:24:34/ 标签: spring, java, 后端

  SimpleJndiBeanFactory 是 Spring Framework 早期版本中的一个类,用于提供对 JNDI(Java Naming and Directory Interface)资源的简单访问。JNDI 是 Java EE 中的一个标准 API,允许 Java 应用程序访问命名和目录服务,如 LDAP 目录和各种服务提供者,同时也可以访问 Java EE 容器中的资源。

1. 概述

  SimpleJndiBeanFactory 是一种 BeanFactory 实现,允许在 Spring 应用上下文中从 JNDI 查找和获取 bean。这个类主要用于简化从 JNDI 中获取资源的过程,使得在 Spring 中使用 JNDI 资源更加容易。

2. 使用 JNDI 的场景

   在一些企业应用中,特别是 Java EE 应用,可能会用到 JNDI 来访问数据源、远程 EJB、MailSession 等资源。在 Spring 应用中,可以通过 SimpleJndiBeanFactory 从 JNDI 中获取这些资源,并在 Spring 管理的 bean 之间进行注入。

3. 注意事项

  SimpleJndiBeanFactory 的使用在现代 Spring 应用中并不常见,通常推荐使用 Spring 的其他功能,例如 @Value 注解或直接使用 JndiObjectFactoryBean 来从 JNDI 获取资源。Spring 提供了许多便利的方法来简化 JNDI 资源的管理,使用更加方便和灵活。

示例

  以下是一个简单的示例,展示如何使用 JNDI 访问数据源并将其注入到 Spring bean 中:

1. 设置 JNDI 环境

  确保在你的应用服务器中设置了数据源,通常这一步在应用服务器配置中完成。

2. 使用 JndiObjectFactoryBean
java">import org.springframework.jndi.JndiObjectFactoryBean;public class DataSourceBean {private JndiObjectFactoryBean dataSource;public DataSourceBean() {JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();jndiObjectFactoryBean.setJndiName("java:comp/env/jdbc/MyDataSource");jndiObjectFactoryBean.setProxyInterface(DataSource.class);jndiObjectFactoryBean.setLookupOnStartup(true);jndiObjectFactoryBean.afterPropertiesSet(); // Initializes the JNDI objectthis.dataSource = jndiObjectFactoryBean;}public DataSource getDataSource() {return (DataSource) this.dataSource.getObject();}
}
3. Spring 配置

通过 Java 配置或 XML 配置来设置 bean。

Java 配置
java">import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class AppConfig {@Beanpublic DataSourceBean dataSourceBean() {return new DataSourceBean();}
}

4. 使用 DataSourceBean

java">import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Main {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);DataSourceBean dataSourceBean = context.getBean(DataSourceBean.class);DataSource dataSource = dataSourceBean.getDataSource();// Use the data source, e.g., establish a connection}
}

结论

  • SimpleJndiBeanFactory:用于通过 JNDI 获取 bean 资源的简单实现,允许在 Spring 中使用 JNDI 资源。
  • 现代化替代:在现代 Spring 应用中,通常推荐使用 JndiObjectFactoryBean 或其他相关类,提供更灵活的方式来访问 JNDI 资源。
  • 配置和使用:通过设置数据源在应用服务器中的 JNDI 环境,并在 Spring 中进行注入,能够有效进行资源管理。

   虽然 SimpleJndiBeanFactory 在早期版本的 Spring 中存在,并且用于处理 JNDI 资源,在现代应用中,你会发现 JndiObjectFactoryBean 更加常用。


http://www.ppmy.cn/embedded/97262.html

相关文章

Mongodb、redis、mysql、mssql、oracle、PostgreSQL服务简介和默认运行端口

MongoDB 简介: MongoDB 是一个开源的 NoSQL 文档数据库,使用类似 JSON 的 BSON 格式存储数据。它是一个高性能、高可用、自动伸缩的分布式数据库。默认端口: 27017 Redis 简介: Redis 是一个开源的内存数据库,常用作缓存和消息队列代理。它支持多种数据结构,如字符串、哈希、列…

★ C++基础篇 ★ vector 类

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C基础篇第六章----vector类 ~ 目录 一 vector的介绍及使用 1.1 vector的介绍 1.2 vector的使用 1.2.1 vector的定义 1.2.2 vector iterator 的使用 1.2.3 vector 空间增长问题 1.2.4 vecto…

Etcd:分布式键值存储的基石

Etcd 是一个分布式的、一致性的键值存储系统&#xff0c;由 CoreOS 设计并开源。它主要用于共享配置和服务发现&#xff0c;并且被广泛应用于 Kubernetes、Docker 和其他云原生工具中作为核心组件之一。Etcd 使用 Raft 一致性算法来保证数据的一致性&#xff0c;使得它非常适合…

C语言 | Leetcode C语言题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; struct hash_table {int key;int val;// 查看 https://troydhanson.github.io/uthash/ 了解更多UT_hash_handle hh; };typedef struct hash_table* hash_ptr;struct pair {int first;int second; };void swap(struct pair* a, struct pair*…

NFS实现多服务器文件的共享

文章目录 一、简介二、部署1、准备1、服务端和客户端&#xff1a;安装nfs-utils2、服务端&#xff1a;创建共享目录3、服务端&#xff1a;配置exports文件4、客户端挂载5、客户端&#xff1a;卸载 三、附录1、NFS服务基本命令2、/etc/exports参数解释3、exportfs命令 参考资料 …

IP SSL证书快速申请教程

在互联网安全领域中&#xff0c;SSL证书是比较普遍的传输数据加密方式之一。SSL证书通过建立加密通道&#xff0c;确保客户端与服务器之间传输的数据不被第三方窃取或篡改。而大多数SSL证书&#xff0c;如单域名SSL证书、多域名SSL证书以及通配符SSL证书&#xff0c;在申请时必…

【源码+文档+调试讲解】健美操评分系统

摘 要 健美操评分系统采用B/S架构&#xff0c;数据库是MySQL。系统的搭建与开发采用了先进的JAVA进行编写&#xff0c;使用了springboot框架。该系统从三个对象&#xff1a;由管理员、裁判员和用户来对系统进行设计构建。主要功能包括首页&#xff0c;个人中心&#xff0c;裁判…

反射型XSS的几种payload

目录 第一种&#xff1a;采用的是urlcode编码 第二种&#xff1a;前面用html实体编码&#xff0c;后面用urlcode编码 第三种&#xff1a;只对&#xff1a;使用urlcode编码 第四种&#xff1a;对<>进行html实体编码 第五种&#xff1a;textarea 第六种&#xff1a;和…

【Python】nn.Conv1、2、3d()函数详解和示例

前言 在深度学习中&#xff0c;‌卷积神经网络&#xff08;‌Convolutional Neural Networks, CNNs&#xff09;‌是一种非常强大的模型&#xff0c;‌广泛应用于图像识别、‌自然语言处理、‌视频分析等领域。‌PyTorch 提供了 nn.Conv1d、‌nn.Conv2d 和 nn.Conv3d 三个类&a…

详解Element-UI el-table表格中勾选checkbox(selection)多选删除

本节讲解的是关于组件库中el-table组件多选删除功能的实现。 1.Vue文件内的引用 2.页面数据 3.存储多选数据 4. 处理多选数据 这里通过循环的方式找到数据并对数据删除&#xff0c;这种方式易于理解&#xff0c;但不一定是最优方案

c++学习

关键字 continue continue 关键字用于控制循环语句的执行流程。当continue 语句被执行时&#xff0c;它会跳过当前循环迭代中剩余的代码&#xff0c;并立即开始下一次迭代。continue 通常用于 for、while 和 do-while 循环中。 #include <iostream> using namespace s…

深入理解逻辑回归

深入理解逻辑回归 文章目录 深入理解逻辑回归什么是逻辑回归&#xff1f;Sigmoid 函数几率&#xff08;Odds&#xff09;与对数几率&#xff08;Logit&#xff09;函数为什么使用对数几率函数&#xff1f;总结 逻辑回归&#xff08;Logistic Regression&#xff09;是机器学习和…

遥感之常用各种指数总结大全

目前在遥感领域基本各种研究领域都会用到各种各样的指数&#xff0c;如水体指数&#xff0c;植被指数&#xff0c;农业长势指数&#xff0c;盐分指数&#xff0c;云指数&#xff0c;阴影指数&#xff0c;建筑物指数&#xff0c;水质指数&#xff0c;干旱指数等等众多。 本文对上…

CSS的:host伪类:精粹自定义Web组件选择艺术

CSS的:host伪类是Web组件中一个强大的工具&#xff0c;它允许开发者针对自定义Web组件的根节点应用样式。随着Web组件标准的推出&#xff0c;自定义元素&#xff08;Custom Elements&#xff09;和影子DOM&#xff08;Shadow DOM&#xff09;成为了构建可重用、封装良好的Web组…

Unity引擎加密方案解析

据悉&#xff0c;Unity引擎的全球市场占有率已经超过50%&#xff0c;而在全球排名前1000的手游当中&#xff0c;这一数据更是高达73%。不止如此&#xff0c;Unity在中国拥有高达350万的注册用户&#xff0c;《崩坏星穹铁道》、《王者荣耀》等爆款游戏均为Unity引擎开发。 庞大…

微信答题小程序产品研发-后端开发

在开发答题小程序的后端服务和数据库设计时&#xff0c;需要考虑API的设计、数据库模型的构建以及数据的安全性和一致性。 这里我采用了云开发&#xff0c;后端语言是Node&#xff0c;数据库是NoSql&#xff0c;然后我简单整理了各个功能模块的后端开发概要和数据库设计。 1. …

RabbitMq的基本理解

MQ概念及同步异步&#xff1a; 同步调用&#xff1a; 是一种编程模型&#xff0c;其中调用者发送请求并等待响应。在同步调用中&#xff0c;调用者会阻塞&#xff0c;直到被调用的方法返回结果。 异步调用: 是一种编程模型&#xff0c;其中调用者发送请求后立即返回&#x…

Qt系列之数据库(三)补充篇

一、数据库删除操作&#xff1a; 基本语法 DELETE FROM table_name WHERE [condition]; DELETE FROM ---- 关键字 table_name ---- 表名 WHERE ---- 条件的关键字 [condition] --- 条件表达式在这里插入代码片具体使用&#xff1a; QString sqlDelete QString("DELETE…

iOS ColleCtionView 如何让cell 不重复创建并且只在展示的时候才创建

前言 使用 collectionView 一屏只展示一个 cell &#xff0c;一次只加载当前 cell&#xff0c;还要能够缓存已加载过的 cell &#xff0c;使 cell 不重复加载&#xff0c;听着好像就是将 collectionView 的复用机制禁用掉。用collectionView 实现这个需求&#xff0c;就出现了…

【el-table】横向滚动条加粗后,滚动到固定列下被遮挡,已解决

横向滚动条按要求加粗后&#xff0c;遇到的问题&#xff1a;列表的操作列是固定在最右侧的&#xff0c;当滚动条滑动到最右侧的时候&#xff0c;滚动条被遮挡了 我尝试了几种方法都不行&#xff0c;比如找到.el-table__fixed-right .el-table__fixed-footer-wrapper &#xff…