Spring2.6高级配置、util简化配置

Spring Security 6.x 整合 OAuth 2.1:构建企业级认证授权方案实战 在Web应用开发中,认证与授权是保障系统安全的核心机制。认证负责验证用户身份,授权则决定其可访问的资源与操作。JWT作为一种广泛使用的无状态令牌技术,是实现分布式系统安全通信的关键。其原理是基于数字签名,确保信息在传输过程中不被篡改,具有自包含、易于跨域等优势。结合OAuth 2.0/2.1协议,能够为应用提供安全的第三方授权和单点登录能力,其技术价值在于构建标准化、可扩展的安全体系。在微服务、前后端分离及开放平台等场景下,这种组合方案尤为重要。本文聚焦于使用Spring Security 6.x框架,深度 阅读详情
高级配置
1、调用getter方法:
使用PropertyPathFactoryBean。

         - 调用哪个对象: setTargetObject

         - 哪个getter方法: setPropertyPath(String propertyPath)

eg:

①beans.xml


②测试:

		ApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml");
		System.out.println(appContext.getBean("username"));

③测试结果:


④简化配置:

   - getter:<util:property-path .../>

   - setter:<util:properties/>

需要配置命名空间:

xmlns:util="http://www.springframework.org/schema/util"

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util.xsd"




2、 访问类或对象的Field值:使用FieldRetrievingFactoryBean。

GetFieldFactoryBean即可获取静态field的值,也可获取实例field的值。
(1)访问静态field:
         - 调用哪个类: setTargetClass
         - 哪个field: setTargetField

eg:

①beans.xml

<bean id = "getFieldBasic" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" abstract="true"/>

<bean id="val1" parent="getFieldBasic"
	p:targetClass="java.sql.Connection"
	p:targetField="TRANSACTION_SERIALIZABLE"
/>

②简化配置: <util:constant .../>

<util:constant id="v1" static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE"/>

(2)访问实例field: ————几乎没用。因为它要求被访问的实例field是public,否则会报错java.lang.NoSuchFieldException
         - 调用哪个对象: setTargetObject

         - 哪个field: setTargetField

eg:

①beans.xml

<bean id="puppy" class="cony.domain.Puppy" p:kind="秋田"/>
<bean id="puppyKind" parent="getFieldBasic"
	p:targetObject-ref="puppy"
	p:targetField="kind"
/>

无简化配置

3、调用普通方法:使用MethodInvokingFactoryBean。

①访问静态方法:
     - 调用哪个类: setTargetClass
     - 哪个方法: setTargetMethod
     - 传参数:   setArguments(Object[] args);

②访问实例方法
    - 调用哪个对象: setTargetObject
    - 哪个方法: setTargetMethod
    - 传参数:   setArguments(Object[] args);

eg:实现一个带有两个按钮和一个文本框的窗口

<!-- JFrame mainWin = new JFrame("我的窗口"); -->
<bean id="mainWin" class="javax.swing.JFrame"
	c:_0="我的窗口"
	p:visible="true"
/>
<!-- JTextArea jta = new JTextArea(9 ,60); -->
<bean id="jta" class="javax.swing.JTextArea"
	c:_0="9"
	c:_1="60"
/>
<!--mainWin.add( new JScrollPane(jta) );(使用嵌套bean) -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
	p:targetObject-ref="mainWin"
	p:targetMethod="add">
	<property name="arguments">
		<list>
			<bean class="javax.swing.JScrollPane"
				c:_0-ref="jta"
			/>			
		</list>
	</property>
</bean>

<!-- 	JPanel jp = new JPanel(); -->
<bean id="jp" class="javax.swing.JPanel"/>
<!-- mainWin.add(jp , BorderLayout.SOUTH); -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="mainWin"
p:targetMethod="add"
>
	<property name="arguments">
		<list>
			<ref bean="jp"/>
			<util:constant static-field="java.awt.BorderLayout.SOUTH"/>
		</list>
	</property>
</bean>

<!-- JButton okBn = new JButton("确定"); -->
<bean id="okBn" class="javax.swing.JButton"
c:_0="确定"
/>
<!-- jp.add(okBn); -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
	p:targetObject-ref="jp"
	p:targetMethod="add"
>
	<property name="arguments">
		<list>
			<ref bean="okBn"/>
		</list>
	</property>
</bean>

<!-- JButton cancelBn = new JButton("取消"); -->
<bean id="cancelBn" class="javax.swing.JButton" c:_0="取消"/>
<!-- jp.add(cancelBn); -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="jp"
p:targetMethod="add"
>
	<property name="arguments">
		<list>
			<ref bean="cancelBn"/>
		</list>
	</property>
</bean>
<!-- mainWin.pack();-->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"
p:targetObject-ref="mainWin"
p:targetMethod="pack"
/>
util简化集合配置

list:该标签用于定义容器中的List集合,并支持通过list-class属性指定List集合的实现类。
set:该标签用于定义容器中的Set集合,并支持通过set-class属性指定Set集合的实现类。
map:该标签用于定义容器中的Map集合,并支持通过map-class属性指定Map集合的实现类。
properties:该标签用于加载一份属性文件,并根据加载的属性文件创建一个Properties Bean实例。

	<bean id="dog" class="cony.domain.Puppy" p:kind="古代牧羊犬" />
	<bean id="dog2" class="cony.domain.Puppy" p:kind="萌萌的柯基" />
	<bean id="dinosaur" class="cony.domain.Dinosaur" p:kind="霸王龙"/>
	
	<bean id="user" class="cony.domain.User"
		p:name="黄豆"
		p:age="21"
		p:dog-ref="dog"
	/>
	
	<util:list id="list1" list-class="java.util.ArrayList">
		<value type="java.lang.String">你好</value>
		<value>齐天大圣</value>
		<bean class="javax.swing.JFrame" c:_0="myWin"/>
	</util:list>
	
	<util:set id="set1" set-class="java.util.TreeSet">
		<value>12</value>
		<value>32</value>
		<value>2</value>
	</util:set>
	
	<util:map id="map1" map-class="java.util.HashMap">
		<entry key="little" value-ref="dog"/>
		<entry key="big" value-ref="dinosaur"/>
	</util:map>
	
	<util:properties id="prop1" location="classpath:abc.properties"/>


Spring Boot Redis序列化配置:Jackson2JsonRedisSerializer解决ClassCastException 在分布式系统与微服务架构中,缓存是提升应用性能的核心技术之一。Redis作为高性能的键值存储,常被用作缓存层以减轻数据库压力。其工作原理是将数据以序列化形式存储,并在读取时反序列化还原。Java应用中,序列化机制的选择直接影响数据兼容性、可读性与跨语言交互能力。Jackson作为Java生态广泛使用的JSON处理库,其提供的Jackson2JsonRedisSerializer能够将对象序列化为人类可读的JSON格式,解决了Java原生序列化的强耦合与不可读问题。然而,配置不当会导致典型的ClassCast 阅读详情

相关推荐

Java配置文件全解析:从Properties到YAML,Spring Boot配置实战指南

在软件工程中,配置文件是实现应用外部化配置和解耦的核心机制,它允许开发者在不修改代码的情况下调整程序行为。其原理是将可变参数从硬编码中剥离,存储于外部文件,通过特定格式(如键值对、标记语言)进行组织。这一技术价值在于提升应用的灵活性、可维护性和环境适应性,广泛应用于数据库连接、服务端口、日志级别等场景的配置管理。在Java生态中,配置文件格式历经演变,从基础的Properties文件到结构化的XML,再到如今Spring Boot推崇的YAML,每种格式都有其适用场景。本文聚焦于**Spring Boot配

weixin_34218890的博客 467

Spring使用util Schema

spring-beans-3.0.xsd是Spring的内核,其它的Schema大多都用于简化某些方面的配置

孤竹的博客 4386

Spring Boot 2.4+ 统一使用 application.yml 配置 Nacos Config 的完整指南

在微服务架构中,配置管理是核心基础能力,旨在解决传统配置方式带来的发布效率低、易出错等问题。其核心原理是将配置与应用解耦,实现集中管理和动态刷新,从而提升系统的可维护性和灵活性。Nacos 作为集服务发现与配置管理于一体的平台,其技术价值在于提供了高可用、动态实时的配置服务。在 Spring Cloud 应用实践中,配置中心客户端如何连接与加载配置是关键。随着 Spring Cloud 2020.0.0 版本对引导上下文机制的调整,新的 `spring.config.import` 属性成为标准配置导入方式

weixin_30457551的博客 454

Spring依赖注入 — util命名空间配置

要使用标签,必须在XML中加入util名称空间(namespace): xmlns:util="http://http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframewor

tuxq5721 2万+

Spring Boot OAuth2整合实战:从第三方登录到API安全防护

OAuth2作为现代应用授权的工业标准协议,其核心思想是‘授权而非认证’,通过定义资源所有者、客户端、授权服务器和资源服务器四个角色间的标准化交互流程,解决了应用间安全访问用户资源的问题。该协议基于授权码、密码、客户端凭证和隐式四种模式,其中授权码模式因其通过前端信道传递授权码、后端信道交换令牌的安全机制,成为Web应用整合第三方登录的主流选择。在技术实现层面,Spring Security框架提供了对OAuth2协议的全面支持,通过自动配置和声明式安全规则,开发者能够高效构建安全的认证授权基础设施。这种整

weixin_30698527的博客 400

Spring @Async实战指南:线程池配置、事务与日志链路全解析

@Async是Spring中实现方法级异步执行的核心机制,其本质是基于TaskExecutor的AOP代理增强。它并非简单语法糖,而是涉及线程调度、上下文传递、事务传播和异常处理的系统性能力。相比原生Thread或CompletableFuture,@Async提供可配置、可监控、与Spring生命周期集成的受控线程池,天然支持MDC日志透传和事务边界控制。在高并发Web应用中,合理使用能显著降低接口响应延迟、提升吞吐量,尤其适用于外部API调用、消息投递、文件IO等IO密集型场景。本文聚焦Spring B

angw337679452的博客 360

10022---Spring<util>标签的使用

Spring的util标签,有以下几种类型。&lt;util:list&gt;&lt;util:set&gt;&lt;util:map&gt;&lt;util:properties&gt;&lt;util:constant&gt;此标签配合&lt;util:property-path&gt;一起使用顾名思义,大家应该能大体猜出它们的用途,下面我们再接着看一下它们的用法。1.首先要引入util命名空...

xxxcyzyy的博客 1052

VM虚拟机下,通过无线,有线两种方式连接PLC的设置方法

1,VMware软件:编辑>虚拟网络编辑器。 2.右下角:更改设置(如果可以选中“添加网络”选项,则可考虑略过此步) 3.选中VMnet0,点击桥接模式,选中你的物理机有线网卡。点击确定。 4.点击添加网络,我的添加完是VMnet2,然后选中,像上一步样,点击桥接模式,在下拉菜单中选中笔记本的【无线网卡】,然后点击确定。 5.VMware软件:虚拟机>设置。 6.点击 添加>网络...

weixin_46441715的博客 2万+

Spring的配置文件

配置文件和相应的类型

wxlbzy99的博客 9025

《深入浅出强化学习原理入门》学习笔记(三)机器人找金币应用实例

《深入浅出强化学习原理入门》学习笔记(三)MDP应用实例

lxs3213196的博客 3187

深入解析Carry4的内部结构与工作原理

本文深入解析了Xilinx/AMD FPGA中的核心硬件资源Carry4的内部结构和工作原理。作为实现超前进位的关键物理电路,Carry4通过其CI、DI、S、O、CO等端口,高效处理4位算术运算的进位逻辑。文章通过端口详解、结构分析和实战计算示例,揭示了其如何加速加法、减法等运算,并探讨了其在优化FPGA设计时序与资源利用中的关键作用。

n4o5p6q7r的博客 501

Spring约束规范

40.XML Schema-based configuration Prev PartVIII.Appendices Next 40.XML Schema-based configuration 40.1Introduction This appendix details the XML Schema-based configuration introduce...

轻描时光 615

车载以太网SOMEIP入门必看:从服务发现到事件订阅,一次搞懂三种核心通信模式(附报文实例)

本文深入解析车载以太网SOME/IP的三种核心通信模式:服务发现、方法调用和事件订阅,通过真实报文实例和仿真工具演示,帮助开发者快速掌握这一关键技术。文章特别强调服务发现机制的基础作用,并详细介绍了Request/Response与Fire&Forget两种方法调用模式的应用场景,为智能汽车网络通信开发提供实用指南。

weixin_30955617的博客 111

Spring Security- 自定义 Oauth2 的授权服务器配置

Spring Security OAuth2 授权服务器配置指南 🚀 本文介绍了如何使用 Spring Security 构建自定义 OAuth2 授权服务器,涵盖了核心概念、技术栈准备、数据模型设计和实现流程。内容要点: OAuth2 基础:解释了 OAuth2 的四种授权模式和核心角色(资源拥有者、客户端、授权服务器、资源服务器) 自定义授权服务器的必要性:适用于需要完全控制认证流程、私有化部署或深度集成的场景 技术实现: 采用 Spring Authorization Server 模块 使用 H2

千淘万漉虽辛苦,吹尽狂沙始到金 1万+

微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南

数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础

weixin_30764883的博客 570

OpenClaw Docker 安装问题解决全记录

控制面板无法加载(WebSocket 错误) | 确认 Nginx 配置中的 `Upgrade` 和 `Connection` 头正确 || 网关容器无法启动 | `docker compose logs openclaw-gateway`,检查权限、镜像名 |如需消除,使用 Let's Encrypt |- `<your-token>`:你的 OpenClaw 网关令牌(如 `b0e5ab...`)将 `<nas-ip>` 替换为你的群晖内网 IP(例如 `192.168.1.100`)。

u014490376的博客 2308

【Log4j2】SLF4j的介绍与使用+SpringBoot日志配置

slf4j,simple logging facade for java的缩写,翻译为java的简单日志外观。slf4j(simple logging facade for java)不是一个真正的日志实现,而是一个抽象层( abstraction layer),也可以理解为一个接口,它是一种适配器的实现方式,它本身不具有输出日志的功能,输出日志还是由log4j、logback等这样的日志组件来进行输出。

weixin_44823875的博客 6492

cartographer基于3d地图的纯定位模式

关于纯定位模式呢,本人试过2d和3d,怎么说呢,有条件的话,建议直接上3d,因为博主当初在做定位时针对室内和室外都尝试过,2d只在室内环境下效果会很棒,但是在室外就呵呵啦!所以这里直接讲解3d室外定位(建图篇请自己查看我之前的博客:[3d建图](https://blog.csdn.net/qq_40216084/article/details/105531983) 看了我之前的博客大概知道配置文件和源文件路径了,我这里就不把路径写出来了,挺麻烦的。直接讲怎么做把,有不懂的留言,看到了我一定知无不言。 **首

qq_40216084的博客 5552

spring 第6天SpEL,P命名空间,Util Schema

小学 中学 大学 字符串斧子 [/code] [b]spring表达式 简称 SpEL[/b] 先把 表达式在bean中的使用给出来 [code="xml"] #{confTest.hello}

路虽远行则将至,事虽难做则必成 158

CATIA二次开发一一一获取属性的几种方法

这些方法覆盖了CATIA CAA开发中属性操作的典型场景,开发者可通过类型判断实现递归遍历、跨文档关联等复杂逻辑。此方法用于遍历对象的所有属性,获取属性键后可通过类型判断选择后续处理方式。适用于处理嵌套对象或关联对象的场景(如几何特征关联制造特征)。适用于简单属性值的直接读取(如版本号、状态标识等)。用于处理多值属性(如多选参数、装配体子件列表等)。用于处理跨文档引用(如零件关联图纸文件)。

工业软件开发 431

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java.util.logging (JUL) 终极指南:从基础配置到高级玩法

【代码】Java.util.logging (JUL) 终极指南:从基础配置到高级玩法。

十年磨一剑,java开发各种业务系统 696

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

spring基础知识 (5):bean配置进阶篇

1、一个bean注入另外一个bean 当Person类中有一个属性是Car,那么该如何配置呢 Car类 package com.imooc.spring; public class Car { private String brand; private double price; public void setBrand(String brand) { ...

YellowStar的博客 5508

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring Boot Jackson配置全解析:从核心配置到高级特性实战

JSON作为现代Web应用数据交换的核心格式,其序列化与反序列化性能直接影响系统效率与稳定性。Jackson作为Java生态中最主流的JSON处理库,通过ObjectMapper提供灵活的配置机制,实现数据格式的精确控制。其技术价值在于平衡开发便利性与性能优化,广泛应用于RESTful API构建、微服务通信、缓存数据存储等场景。本文聚焦Spring Boot项目中Jackson的深度配置,针对日期格式化、空值处理、命名策略等高频需求,结合ObjectMapper定制与注解应用,提供从基础配置到循环引用处理

weixin_34054866的博客 474

Nacos Spring与Spring Boot集成:构建现代化微服务配置中心的最佳实践

Nacos Spring项目是Nacos生态系统中针对Spring框架的重要组件,它为Spring Boot应用提供了便捷的配置管理和服务发现能力。通过Nacos Spring,开发者可以轻松实现配置的动态更新、服务注册与发现等核心微服务功能,构建高效、可靠的现代化微服务架构。 ## 一、Nacos Spring核心功能解析 ### 1.1 动态配置管理 Nacos Spring提供了强大的动

gitblog_00201的博客 891

深入解析EZ模式:系统简化配置背后的自动决策逻辑与工程实践

在软件工程领域,配置管理是系统设计与运维的核心环节。其原理在于通过参数化控制组件行为,平衡灵活性与易用性。配置模式的技术价值在于降低使用门槛、提升开发效率,同时为复杂场景提供调优空间。应用场景广泛覆盖数据库连接池、Web服务器、构建工具等中间件。本文聚焦于EZ模式(简易模式),这是一种通过封装高级参数、启用环境感知与自动决策来简化配置的常见设计。通过对比标准模式,文章剖析了EZ模式在启动日志、运行时配置与内部状态上的具体表现,并结合缓存组件等热词,提供了从日志监控到问题排查的完整工程实践路径,帮助开发者在享

weixin_34161064的博客 397

Spring Boot 日志整合

Spring Boot日志整合与应用摘要 Spring Boot统一采用SLF4J作为日志门面,Logback作为默认实现,通过以下方式实现多日志框架整合: 统一抽象层:使用SLF4J作为统一接口,通过适配器(如jcl-over-slf4j)桥接commons-logging等第三方日志框架 依赖管理: 排除原日志框架依赖 添加适配器中间包 引入SLF4J具体实现 配置方式: 通过application.properties设置日志路径/格式 支持自定义配置(logback-spring.xml等)覆盖默认

py_1990_04_20的博客 567
上一篇: Spring2.5—— Bean的生命周期、作用域不同步的Bean
下一篇: Spring3.1——Spring表达式语言SpEL
ack_Finding
博客等级 码龄10年 6粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值