Spring3.0 入门进阶(1):从配置文件装载Bean

2024-02-14 11:48

本文主要是介绍Spring3.0 入门进阶(1):从配置文件装载Bean,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring 已经盛行多年,目前已经处于3.0阶段,关于Spring的概念介绍性的东西网上已经很多,本系列博客主要是把一些知识点通过代码的方式总结起来,以便查阅.

作为入门,本篇主要介绍Bean的加载

工具类

package com.eric.introduce;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.eric.introduce.di.ConferenceRoom;
import com.eric.introduce.di.DummyConfig;
import com.eric.introduce.di.Knight;
import com.eric.introduce.di.Performer;
import com.eric.introduce.di.RescueDamselQuest;/*** @author Eric* */
public class IntroduceUtil {private static final String CONFIG_FILE = "com/eric/introduce/introduce.xml";private static ApplicationContext context = new ClassPathXmlApplicationContext(CONFIG_FILE);/*** 通过ClassPathXmlApplication获得Bean实例*/public static void demonstrateDIByClassContent() {Knight knight = (Knight) context.getBean("knight");knight.embarkOnQuest();}/*** 默认情况下Context总是返回同一个对象*/public static void demonstrateSingleStonClassContent() {Knight knight1 = (Knight) context.getBean("knight");Knight knight2 = (Knight) context.getBean("knight");System.out.println(knight1);System.out.println(knight2);}/*** Spring中的singleSton只是正对一个context而言,不同的上下文会有不同的实例*/public static void demonstrateSingleStonInContent() {ApplicationContext anotherContext = new ClassPathXmlApplicationContext(CONFIG_FILE);Knight knight1 = (Knight) context.getBean("knight");Knight knight2 = (Knight) anotherContext.getBean("knight");System.out.println(knight1);System.out.println(knight2);}/*** 通过factoryMethod 加载Bean* **/public static void demonstrateLoadBeanByFactory() {DummyConfig dummyConfig = (DummyConfig) context.getBean("config");System.out.println(dummyConfig.getConfigurationMap());}/*** 如果通过factoryMethod的方式加载Bean,即使是不同的Context,任然返回的是同一个Bean实例* **/public static void demonstrateLoadBeanByFactory2() {ApplicationContext anotherContext = new ClassPathXmlApplicationContext(CONFIG_FILE);DummyConfig dummyConfig = (DummyConfig) context.getBean("config");DummyConfig dummyConfig2 = (DummyConfig) anotherContext.getBean("config");System.out.println(dummyConfig);System.out.println(dummyConfig2);}/*** 但Bean定义了Scope设置为Prototype后,每次会实例化不同的实例*/public static void demonstratePrototypeBean() {RescueDamselQuest quest1 = (RescueDamselQuest) context.getBean("prototypeQuest");RescueDamselQuest quest2 = (RescueDamselQuest) context.getBean("prototypeQuest");System.out.println(quest1);System.out.println(quest2);}/*** 验证init以及destory方法* **/public static void demonstrateInitAndDestory() {ConferenceRoom conferenceRoom = (ConferenceRoom) context.getBean("conferenceRoom");conferenceRoom.use();}/*** 验证了注入集合的几种方法*/public static void demostrateInjectionPropertieWays() {Performer performer = (Performer) context.getBean("instrumentPerformer");performer.performer();performer.eatFruit();performer.printProperties();}}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><bean id="knight" class="com.eric.introduce.di.BraveKnight"><constructor-arg ref="quest"></constructor-arg></bean><bean id="quest" class="com.eric.introduce.di.RescueDamselQuest" /><bean id="minstrel" class="com.eric.introduce.aop.Minstrel" /><bean id="config" class="com.eric.introduce.di.DummyConfig"factory-method="getInstance" /><bean id="prototypeQuest" class="com.eric.introduce.di.RescueDamselQuest"scope="prototype" /><bean id="conferenceRoom" class="com.eric.introduce.di.ConferenceRoom"init-method="beforeUse" destroy-method="afterUse" lazy-init="true" /><bean id="guitar" class="com.eric.introduce.di.Guitar" /><bean id="apple" class="com.eric.introduce.di.Apple" /><bean id="orange" class="com.eric.introduce.di.Orange" /><bean id="instrumentPerformer" class="com.eric.introduce.di.InstrumentPerformer"><property name="name" value="Eric" /><property name="age" value="26" /><property name="instrument" ref="guitar" /><property name="privateInstrument"><bean class="com.eric.introduce.di.Piano"></bean></property><property name="favFruit"><list><ref bean="apple" /><ref bean="orange" /></list></property><property name="properties"><props><prop key="SPORT">FOOTBALL</prop><prop key="CITY">WUHAN</prop></props></property></bean><aop:config><aop:aspect ref="minstrel"><aop:pointcut id="embark" expression="execution(* *.embarkOnQuest(..))" /><aop:before pointcut-ref="embark" method="singleBeforeQuest"></aop:before><aop:after pointcut-ref="embark" method="singleAfterQuest" /></aop:aspect></aop:config>
</beans>

由于功能都比较简单,通过调用方法以及配置文件应该就可以看出用法,所以只列出了部分文件.

如果需要完整事例,请下载附件

这篇关于Spring3.0 入门进阶(1):从配置文件装载Bean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708418

相关文章

浅析如何使用xstream实现javaBean与xml互转

《浅析如何使用xstream实现javaBean与xml互转》XStream是一个用于将Java对象与XML之间进行转换的库,它非常简单易用,下面将详细介绍如何使用XStream实现JavaBean与... 目录1. 引入依赖2. 定义 JavaBean3. JavaBean 转 XML4. XML 转 J

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

python3 gunicorn配置文件的用法解读

《python3gunicorn配置文件的用法解读》:本文主要介绍python3gunicorn配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python3 gunicorn配置文件配置文件服务启动、重启、关闭启动重启关闭总结python3 gun

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot中配置文件pom.xml的使用详解

《SpringBoot中配置文件pom.xml的使用详解》SpringBoot的pom.xml文件是Maven项目的核心配置文件,用于定义项目的依赖、插件、构建配置等信息,下面小编就来和大家详细介绍一... 目录1. 基本结构2. 关键部分详解2.1 <modelVersion>2.2 项目坐标2.3 <p