Spring框架系列_Spring框架--Spring容器(二)

SpringBoot和一系列框架的整合 SpringBoot和一系列框架的整合,有Activiti、Shiro、Swagger、Websocket等 立即下载

Spring容器

启动Spring容器(实例化容器)

Spring容器

启动Spring容器(实例化容器)

  IOC容器读取Bean配置创建Bean实例之前,必须先对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用。Bean是Spring管理的基本单位,任何的Java对象和组件都被当成Bean处理,容器还负责管理Bean与Bean之间的依赖关系。

 两种类型的启动实现 

  1、BeanFactory:IOC容器的基本实现,是Spring框架的基础设施,面向Spring本身使用:

  Spring容器最基本的接口就是BeanFactor。BeanFactory负责配置、创建、管理Bean。
       BeanFactory接口包含以下几个基本方法:

    Boolean containBean(String name):判断Spring容器是否包含id为name的Bean实例。

    <T> getBean(Class<T> requiredTypr):获取Spring容器中属于requiredType类型的唯一的Bean实例。

    Object getBean(String name):返回Spring容器中id为name的Bean实例。

    <T> T getBean(String name,Class requiredType):返回容器中id为name,并且类型为requiredType的Bean实例

    Class <?> getType(String name):返回容器中指定Bean实例的类型。

其他的方法与属性可通过如下方式查看: 

 在Eclipse开发工具中,选中BeanFactory后按F4或者快捷键Ctrl+T 快速显示当前类(接口)的继承结构


 2、ApplicationContext:面向使用Spring框架的开发者,几乎所有的应用都使用它而非底层的BeanFactory:

         ApplicationContext是BeanFactory的子接口,一般都会用ApplicationContext,在使用上相比BeanFactory更方便一些
   (拓展了一些常用方法)。

查看下 ApplicationContext的继承结构:

   

看结构能够看出ApplicationContext有1个子接口,多个抽象类,2个实现类

  1. 一个子接口:ConfigurableApplicationContext

        此接口新增两个主要方法refresh和close,让ApplicationContext具有启动、刷新和关闭上下文的能力

    2. 两个实现类:ClassPathXmlApplicationContext和FileSystemXmlApplicationContext

       ① ClassPathXmlApplicationContext : 从类路径下加载配置文件

            文件路径:默认指的是项目的classpath路径下面,所以不需要写前缀classpath:。如果指向绝对路径,需要加上file:

       ② FileSystemXmlApplicationContext:从文件系统中加载配置文件

            文件路径:默认指的是项目的根目录下,想使用项目的classpath路径下面,需要加上classpath:。

案例演示目录结构:

采用Maven构建项目:

导入Spring所需Jar依赖节点配置:

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.frame</groupId>
  <artifactId>Spring-StartObject-Analysis</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.3.6.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-beans</artifactId>
  		<version>4.3.6.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>4.3.6.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-expression</artifactId>
  		<version>4.3.6.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>commons-logging</groupId>
  		<artifactId>commons-logging</artifactId>
  		<version>1.2</version>
  	</dependency>
  </dependencies>
</project>

 创建JavaBean对象:HelloWorld.java

package com.dk.spring.bean;

public class HelloWorld {
	private String name;

	public void setName(String name) {
		System.out.println("调用了设置属性");
		this.name = name;
	}

	public HelloWorld() {
		System.out.println("初始化构造器");
	}

	public void hello() {
		System.out.println("Hello: " + name);
	}
}

 创建Spring的配置文件配置对应JavaBean:

applicationContext.xml:

<?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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

	<bean id="helloworld" class="com.dk.spring.bean.HelloWorld">
		<property name="name" value="Spring"></property>
	</bean>
</beans>

 最后创建Spring容器启动文件:SpringContainer.java

package com.dk.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.dk.spring.bean.HelloWorld;

public class SpringContainer {

	public static void main(String[] args) {
		//BeanFactory
		// 1、创建Spring的IOC容器的对象
		ApplicationContext ctx0 = new ClassPathXmlApplicationContext("applicationContext.xml");
		ApplicationContext ctx1 = new ClassPathXmlApplicationContext("file:filepath/applicationContext.xml");
		
		ApplicationContext ctx2 = new FileSystemXmlApplicationContext("filepath/applicationContext.xml");
		ApplicationContext ctx3 = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
		// 2、从IOC的容器中获取Bean的实例
		HelloWorld helloWorld = (HelloWorld) ctx2.getBean("helloworld");
		// 3、调用hello方法
		helloWorld.hello();
	}
}

 运行SpringContainer 的main方法测试不同方式加载配置文件的方式:

控制台输出信息如下:

我们发现两种方法都是可以的,不过一般我们使用类路径相对路径加载配置文件实例化Spring容器。

ApplicationContext ctx0 = new ClassPathXmlApplicationContext("applicationContext.xml")

 

simulink中MIL测试简单理解 输入信号设置如下:选中New Test Case1 ---INPUT。5、新建(选择New,Test from Spreadsheet)6、可以新建也可以导入(Use existing test)Source:Output为自己预测结果。3、右键子系统(Create)打开生成表格,可以自己调试。4、创建测试用例表格。保存路径为模型路径。保存路径在模型路径。8、运行测试设h置。 阅读详情

相关推荐

2025年春科研论文写作指导(如何写好科研论文)研究生网课期末考试

希望能帮助到大家

beijieweiyu的博客 5790

Spring 提供的一些常用框架

Spring 生态系统提供了许多框架和工具,覆盖了从基础开发到分布式系统的各个领域。

weixin_44594317的博客 1129

博途AI助手演示,完成简单且重复的梯形图代码,并导入到博途

自写个博途AI助手,下面演示AI帮我生成完善多个模拟量输入转换的代码,

gsjkwg的博客 1527

spring web开发有哪些框架

Spring Boot:Spring Boot 是一个快速开发 Spring 应用程序的框架,使用 Spring Boot 可以快速构建 Web 应用程序,而无需进行大量的配置。Spring Cloud:Spring Cloud 是一套用于构建分布式应用程序的框架,它提供了多种分布式应用程序开发的解决方案,包括服务发现、配置管理、负载均衡、断路器等。Spring Data:Spring Data 是一个用于简化数据访问的框架,它提供了一种简单的方式来访问数据存储,包括关系型数据库、非关系型数据库等。

weixin_44939749的博客 547

Dify平台+Excel批量分析实战:5分钟搞定大模型数据处理(附完整代码)

本文详细介绍了如何利用Dify平台的数据集功能,结合Excel和Python脚本,快速构建大模型批量数据处理流水线。通过实战案例演示,读者可在5分钟内完成客户反馈情感分析、产品文案生成等任务,实现从原始数据到结构化洞察的高效转化,极大提升工作效率。

3a9bq4r8t2y的博客 316

Auto.js凉了之后,我们该用啥?AutoX.js保姆级环境搭建与第一个脚本实战(2024最新)

本文详细介绍了AutoX.js作为Auto.js替代方案的环境搭建与脚本开发实战指南。从技术生态现状分析到2024最新环境配置,再到编写第一个实用脚本和进阶调试技巧,帮助开发者无缝迁移至AutoX.js平台。特别适合需要手机自动化的JavaScript开发者,涵盖从基础到企业级应用的全套解决方案。

weixin_28737073的博客 390

常用框架01 - Spring

Spring 01

fengbaobaola的博客 870

Python语言基本语法元素

Python语言的基本语法元素:包括Python程序的格式框架,语法元素名称,数据类型和语句元素以及基本的输入输出函数。

Python全栈系列 8366

三大框架-Spring

一 .概述 spring框架是以一个分层架构,有七个定义良好的模块组成,Spring模块构建在核心容器之上,核心容器定义了创建,配置和管理bean方式: 1.Spring Core:核心容器 ,提供Spring的基本功能. 2.SPring Contest:Spring上下文,是一个配置文件 3.Spring AOP : Spring 中面向切面编程 4..Spring Dao:用于管理异常与抛出错误的信息 5.Spring ORM: 提供ORM对象关系工具 6.Spring Web: 用于处

qq_55624813的博客 1万+

IPOP 使用详解 (附IPOP工具包)

IP 地址动态绑定功能;路由信息查询和配置功能;MAC 地址信息查询和修改功能;MAC 、主机信息扫描功能;本机网络报文统计功能;本机端口列表、远程端口扫描功能;端口映射功能;网卡流量统计功能;本机 IP 报文捕获和发送功能;终端控制功能(支持 telnet 、 dos、 ssh、 sftp 、ftp、com 等协议);TCL 脚本支持;多种服务功能( tcp/udp/ping/telnet/ftp/tftp/web/team/syslog/smtp );

悦分享 1万+

32、运算放大器的工作原理与应用

本文详细介绍了运算放大器的工作原理与多种应用场景,涵盖开环与闭环放大器的基本概念、理想运算放大器的特性及其‘黄金规则’。文章深入解析了反相放大器、同相放大器、单位增益跟随器与反相器的配置和增益计算,并探讨了电压比较器及窗口比较器的工作机制。同时提供了运算放大器在实际应用中的选型流程、使用注意事项以及常见故障排查方法,帮助读者全面掌握运算放大器的设计与应用要点。

u5v6w7的博客 163

20 分钟梳理 Spring 全家桶 !

作 者:Daisy授权转自IT技术思维,每日精选优质干货,欢迎关注!>><<Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括S...

公众号:Java后端 1180

【思博伦】史上最详细Spirent TestCenter测试仪使用教程精讲(一)!图解超赞超详细!!!

3. 在弹出的界面中,找到菜单栏中的“Connect/Create”,选择下拉框中的“Connect to Physical/Visual Chassis”,在弹出的对话框中输入思博伦测试仪的IP地址:192.168.6.244,点击“OK”;说明:目前我们只需要使用到Raw Stream Block,不需要用到Bound Stream Block。说明:如果要使用100G模式,由于硬件限制,必须连续3个面板端口同时配置为100G使用。打开安装包,并按照提示按照即可。

风云说通信 6479

Spring框架新手快速上手系列:(二)体验一把自己配置低级容器

Spring框架快速上手系列二:手动配置低级容器,感受Spring框架内部的工作原理,开启源码研究之路。

码农无双的博客 732

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring框架:核心容器总结

最近想要深入了解一下spring,所以今天先对spring框架做一个宏观的总结。 Spring框架: 首先我们看到Spring框架被分成7部分:Core Container(核心容器),Data Access/Integration、WEB、AOP、Instrumentation、Messaging(消息)和Test(测试),这篇博客我们把注意点放到最核心的核心容器上来进行总结。 核心容器核心容器

当一堆用不熄灭的柴火 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【Spring源码系列-IOC容器二】

spring获取bean的流程

qq_45592483的博客 1473

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring框架及Spring IoC核心容器介绍

SpringIoC核心容器介绍及其使用方式,推荐注解+配置类!!

weixin_44525733的博客 2514

二、Spring框架中容器基本用法详解

Spring框架是基于Java的开源轻量级开发框架,通过IoC(控制反转)和AOP(面向切面编程)两大核心思想简化企业级开发。2025年主流版本Spring Framework 6.x支持JDK21,提供编译时注解处理和GraalVM原生镜像构建能力。Spring容器是框架核心,负责Bean生命周期管理和依赖注入,包含BeanFactory(基础接口)和功能更丰富的ApplicationContext(企业级首选)。

持续输出Java相关知识 975

Spring【二】IoC容器

IoC容器是Spring最核心的概念和内容。他替代了传统的new方式初始化对象,通过读取在配置中的Bean定义,自动创建并管理容器的Bean实例及其生命周期;最重要的是可以在Bean的定义中进行依赖对象的配置,并根据依赖配置自动注入相关依赖,降低对象之间的耦合程度,以达到解耦的效果。Spring提供了多种依赖注入的方式,包括构造函数注入和设置值注入等。 一、组件、框架、容器 组件、框架和容器是所有开发语言都适用的概念。组件时为了提高代码的重用而对代码进行隔离和封装;框架在提供一系列组件的基础上,定义了更

风继续吹 1571

【Spring框架全系列】第一个Spring程序

第一个Spring程序,如何配置spring项目,如何添加启动类,如何存取对象;

冲击大厂之路!!! 2419

Spring 理解一:框架、spring框架、servlet容器、web容器、spring容器、springmvc容器

框架是什么? 框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度。 比如说不用写jdbc源代码,直接调用接口 spring框架是什么? java界乃由五大传统框架:1.核心业务层框架(地位不可动摇)spring,2.控制层框架:spring MVC与struts2, 持久层框架:Mybatis,h...

weixin_43370380的博客 629

Spring系列:Spring框架的认知

Spring系列:Spring框架的认知Spring 简介概述Spring 体系结构概述Spring 的特点非侵入式容器IoCAOPSpring 与 IoC概述第一个 Spring 应用程序POM创建接口与实现创建 `UserService` 接口创建 `UserServiceImpl` 实现创建 Spring 配置文件测试 Spring IoCBean 的装配方式概述容器中 Bean 的作用域基...

路修的博客 2533

Spring系列:父子容器详解

又一次被面试官带到坑里面了。 面试官:springmvc用过么? 我:用过啊,经常用呢 面试官:springmvc中为什么需要用父子容器? 我:嗯。。。没听明白你说的什么。 面试官:就是controller层交给一个spring容器加载,其他的service和dao层交给另外一个spring容器加载,web.xml中有这块配置,这两个容器组成了父子容器的关系。 我:哦,原来是这块啊,我想起来了,我看大家都这么用,所以我也这么用 面试官:有没有考虑过为什么? 我:我在网上看大家都这么用,所以我也这么用了,具体

qq_43842093的博客 6192

Spring框架核心之IoC容器

本文详细介绍了Spring框架的概念、核心模块IOC 容器以及DI的概念、使用。

weixin_52176709的博客 1383

Spring IoC容器

核心技术 发行版5.0.8 这一部分的指导文档覆盖了所有的完全集成到Spring框架中的技术。 这些技术中首要的便是Spring框架的控制反转(IoC)容器。Spring框架的IoC容器的全面的处理是与Spring的面向切面编程(AOP)的彻底实现紧密相关的。Spring框架拥有他自己的AOP框架,该技术在概念上是很容器理解的,并且成功的解决了在Java企业编程中的AOP需求的80%的点。 该框...

hongbochen1223的专栏 1万+

Spring框架入门(二):IOC容器

spring核心容器也可以称为IOC容器,该容器主要负责管理各种对象,主要包括项目的生命周期(对象的创建、初始化、销毁等)、不同对象之间依赖关系的建立、将不同的对象及对象代码在程序运行期间动态的结合在一起等等。​IOC容器并没有实现更多的功能,但它的存在使我们不需要很多代码、不需要考虑对象间复杂的耦合关系就能从IOC容器中获取合适的对象,而且提供了各种对象的可靠的管理,极大地降低了开发的复杂性。

执笔写JAVA 1129
上一篇: Spring框架系列_创建HelloWorld项目_纯净版(一)
下一篇: Spring框架系列_Spring框架__通过XML方式配置Bean(三)
Coder_Boy_
博客等级 码龄10年 2804粉丝 819原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值