Spring入门学习(二)

实战指南 | 快速修复Adobe Acrobat 2020安装过程中的常见注册表错误 本文提供了Adobe Acrobat 2020安装过程中遇到“无法打开键”注册表错误的详细修复指南。通过安全编辑注册表,精准定位并删除残留键值,可快速解决此常见安装报错,确保软件顺利安装。同时,文章也介绍了其他安装问题的应对策略与预防措施。 阅读详情

Spring入门学习(二)

Spring3-轻量级的控制反转(IoC)和面向切面(AOP)的容量框架

Spring3 软件包下载地址:http://projects.spring.io/spring-framework/

Spring3 IoC(Inversion of Control)的原理和主要组件

       Spring3框架的核心是实现了IoC模式的轻量级容器,IoC是Spring3的框架的核心。

1)      IoC的原理

控制反转是Spring框架的核心。所有的组件都是被动的,所有的组件的初始化和调用都由容器负责。简单来说就是由容器控制程序之间的关系,而非传统实现中由程序代码直接超控,即在一个类中调用另外一个类。这也就是控制反转的概念所在:控制权由应用代码中转到了外部容器。

2)      IoC的主要组件

Spring3框架的两个最基本和最重要的包是:org.springframework.beans.factory(该包中的主要接口是BeanFactory)和org.springframework.context包(该包中的主要接口是ApplicationFactory)。这两个包中的代码提供了Spring IoC特性的基础。Spring IoC框架的主要组件如下:

a)      Beans。

Beans是指项目中提供业务功能的Bean,即容器要管理的Bean。

b)     配置文件(beans.xml或者applicatonContext.xml)

Spring中通过配置文件对Bean进行管理。可命名为beans.xml或者applicationContext.xml,一般使用后者。格式如下。Spring IoC框架可以根据Bean的id从Bean配置文件中取得该Bean的类,并生成该类的一个对象,继而从配置文件中获得该类的属性和值。

<?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:util="http://www.springframework.org/schema/util" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- bean definitions here -->

<bean id="myField"
        class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
    <property name="staticField" value="java.sql.Connection.TRANSACTION_SERIALIZABLE"/>
</bean>
</beans>

当通过Spring3容器创建一个Bean实例时,不仅可以完成Bean的实例化,也可以为Bean制定作用域。Bean的作用域可以设置为如下:

1.      原型模式和单例模式:Spring3中的Bean默认情况下单例模式,容器分配Bean时,总是返回同一个实例;但是如果每次向ApplicationContext请求一个Bean时需要得到不同的实例,需将Bean定义为原型模式。可以使用<bean>元素的singleton属性设置,默认为true。

2.      Request和session:作用域是request和session。每次请求都会残生一个不同的Bean实例。

3.      Global session:共享一个Bean实例。

a)      BeanFactory接口及其相关类。

BeanFactory采用了工厂设计模式,即Bean容器模式,负责读取Bean的配置文件,管理对象的生成、加载,维护Bean对象之间的依赖关系,负责Bean对象的生命周期,对于简单的应用程序来说,使用BeanFactory就已经足够管理Bean,在对象的管理上就可以获得许多便利性。org.springframework.beans.factory.xml.XmlBeanFactory是BeanFactory常用的实例类(Spring3.1以后已被废弃使用)。其根据配置文件中的定义装载Bean。要创建XmlBeanFactory需要传递一个FileInputStream对象,该对象把XML文件提供给工厂。

BeanFactory的常用方法如下:

getBean(String name)

getBean(String name, Class requiredType)

b)     ApplicationContext接口及其相关类。

作为一个应用程序框架,只提供Bean容器管理的功能是不够的。若要利用Spring3所提供的一些高级容器功能可以使用ApplicationContext接口,该接口是提供高级功能的容器。

ApplicationContext的基本功能与BeanFactory很相似,但它还提供一下功能。

1.      提供访问资源文件的更方便的方法。

2.      支持国际化消息。

3.      提供文字消息解析的方法。

4.      可以发布事件,对事件感兴趣的Bean可以接受到这些事件。

ApplicationContext接口的常用实现类有三个。

1.      FileSystemXmlApplicationContext:从文件系统中的XML文件加载上下文中定义的信息。

2.      ClassPathXmlApplicationContext:从类路径中的XML文件加载上下文中定义的信息,把上下文定义的文件当成类路径资源。

3.      XmlWebApplicationContext:从web系统中的XML文件加载上下文中定义的信息。

例如:

测试项目结构图:


 hello.java

package ioc;

public class hello {

	private String a;
	private String b;
	public hello(){
		
	}
	public hello(String a, String b){
		this.a = a;
		this.b = b;
	}
	public String getA() {
		return a;
	}
	public void setA(String a) {
		this.a = a;
	}
	public String getB() {
		return b;
	}
	public void setB(String b) {
		this.b = b;
	}
	
}

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:util="http://www.springframework.org/schema/util" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- bean definitions here -->

<bean id="testHello" class="ioc.hello">
    <property name="a" value="test-a"/>
    <property name="b" value="test-b"/>
</bean>
</beans>

test.java

package ioc;

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

public class test {
	
	public static void main(String[] args){
		
		ApplicationContext context = new FileSystemXmlApplicationContext("C://Users/houshaoli/workspace/Spring-jar/bin/ioc/applicationContext.xml");
		ApplicationContext context1 = new ClassPathXmlApplicationContext("ioc/applicationContext.xml");
		hello testHello = (hello)context1.getBean("testHello");
		System.out.println(testHello.getA());
		
	}

}

3)      注入的两种方式

c)      设置注入

通过setter方法注入被调用者的实例。

上面的例子的applicationContext.xml即为该种注入方式。

d)     构造注入

利用构造方法来设置依赖注入的方式成为构造注入。

如下:

<?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:util="http://www.springframework.org/schema/util" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- bean definitions here -->

<bean id="testHello" class="ioc.hello">
    <constructor-arg value="test-C"></constructor-arg>
    <constructor-arg value="test-D"></constructor-arg>
</bean>
</beans>


 

FPGA远程升级避坑实录:用STARTUPE2原语搞定Flash时钟,K7325T实测有效 本文深入解析了FPGA远程升级中的STARTUPE2原语应用,特别针对K7325T芯片的Flash时钟问题提供了实测有效的解决方案。通过详细的原语工作机制、Vivado工程实现步骤及调试技巧,帮助工程师规避常见陷阱,提升远程升级的可靠性和效率。 阅读详情

相关推荐

给新人的储能系统入门图解:从电芯到EMS,一张图看懂BESS里那些‘黑话’

本文通过视觉化拆解储能系统,从电芯到EMS详细解析BESS中的关键组件和行业术语。涵盖电芯参数、模组组装、PCS功能、BMS与EMS分工,以及SOC、DOD等关键运维参数,帮助新人快速理解储能系统的核心技术和应用场景。

weixin_42522964的博客 595

Spring入门学习二

AOP 面向切面编程,学习之前先要了解一下代理模式: 代理模式(静态代理) 代理模式是AOP的底层实现,一般代理模式就是让一个真是对象想完成的核心功能由代理对象去进行修饰,这样的话就可以实现主要业务和次要业务的分离,而二者之间通过抽象对象来统一实现的规范,通过房东租房来详解一下代理模式: 抽象对象:租房(要租的房) 代理对象:中介 真实对象:房东 访问对象:客户(用来访问对象的人) 代码实现: 租...

weixin_41746577的博客 148

Keil v5.11给STM32烧录程序记录

1)安装KeilMDK511 2)安装ST Link下载器驱动 3)打开Keil v5,加载工程文件 4)load pack(Keil.STM32F1xx_DFP.1.1.0和Keil.STM32F0xx_DFP.1.2.0) 5)编译程序- 0 Error(s), 0 Warning(s). 6)烧录程序 ...

守望的距离 6282

Spring学习(二、Spring的简单入门程序)

本文主要介绍如何使用xml配置,学习Spring管理Bean的入门程序

m0_62684183的博客 135

科研党福音:如何用Zotero+Paper Agent打造你的AI论文速递系统(附详细配置教程)

本文为科研工作者提供了一套利用Zotero和开源工具Paper Agent构建自动化AI论文速递系统的详细教程。该系统能基于用户在Zotero中的文献库智能学习研究兴趣,每日自动从arXiv等平台筛选、下载并深度解读最相关的前沿论文,生成个性化日报,实现从被动接收到主动精准获取的知识工作流重塑。

kite3的博客 517

深入浅出ASAP2标准:手把手教你编写和解析A2L文件(含Python示例代码)

本文深入解析ASAP2标准下的A2L文件,涵盖基础概念、文件结构及Python实现代码,帮助开发者掌握汽车ECU标定和测量中的关键数据管理技术。通过详细示例,展示如何编写和解析A2L文件,提升电控数据管理效率。

happy2的博客 1101

Spring学习(二)-快速入门

环境搭建 在进入实例具体开发前,需要先配置一下工作环境,其中包括数据库表的创建、项目工程的创建、规划Spring配置文件等工作 (一)数据库的搭建 项目中简单的搭建了一个登陆功能,所以在数据库的搭建上创建了两张表,一张存放用户名、密码、最后登陆日期、最后登陆的ip以及一张登陆日志表存放用户登录的ip、日期。 (二)工程搭建 这里我用的是MyEclipse创建了一个web project,并且导入了...

weixin_42544630的博客 189

win10自动修复-无限循环【通用完美】超简单解决办法

2020.02.14今个我的笔记本电脑(Thinkpad Carbon 7 X1)(win10)早晨起来发现蓝屏,上面显示自动修复失败,重启后依然自动修复失败,不断手动重启,始终是修复失败。然后上网开始搜集资料找解决办法。 前边介绍关闭自动修复,如何找出错文件的方法;如果想看最终解决办法,直接看第三部分 上网就会发现这种现象很常见,同时是电脑自动安装系统更新,或者安装某些驱动出现。解决办法也大...

y15941300574的博客 19万+

Spring的入门学习(二)

Spring的IOC的注解开发 在spring入门学习(一)中主要讲解基本为xml的方式开发 注解入门 引入aop的包 引入context约束 在<context:component-scan /> <!-- 配置Service扫描 --> <context:component-scan base-package="com.al.hax.crm.Servic...

hax1435501085的博客 150

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

HAL库STM32CubeMX+DHT11温湿度传感器模块化驱动与OLED显示实战

本文详细介绍了基于HAL库和STM32CubeMX开发DHT11温湿度传感器模块化驱动的实战过程。通过精确的时序控制和模块化封装,实现了传感器数据采集,并结合OLED显示模块实时展示温湿度信息,为嵌入式开发者提供了完整的解决方案。

h6j7k8l9p0的博客 1135

Spring学习笔记(二)Spring快速入门

2.Spring快速入门 2.1Spring程序开发步骤   快速入门程序工作过程 1.背景: 业务逻辑层需要调用持久层的方法,原来我们希望在UserServive实现类中通过创建userDao接口接收一个UserDao实现类的实例然后调用相应方法。但是我们现在要用Spring容器进行解耦,通过Spring容器创建类。 2. 将要创建的Bean的全限定类名配置在xml配置文件中给它一个唯一的id标识。 3. 这时候我们在UserService实现类中通过xml配置文件获得Bean,传入

weixin_43909464的博客 159

以 Joule 驱动的生成式开发:把需求文档直接变成可运行的 SAP 应用

摘要:SAP BTP的AI助手Joule正在改变开发方式,支持从自然语言描述自动生成数据模型、服务、UI及测试代码。在SAP Business Application Studio中,Joule能根据业务需求生成结构化代码,并提供代码补全、重构、解释等功能。开发者需注意避免上传敏感数据,并对AI生成的代码进行人工审核。Joule特别针对ABAP开发进行了优化,提供符合SAP规范的代码建议,帮助迁移遗留系统。此外,它还能快速生成CAP项目原型,但所有AI生成内容都需经过严格测试验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 343

spring学习笔记(二)springboot 入门

1、Spring Boot入门 1.4 环境准备 环境约束: -jdk1.8: SpringBoot 官方推荐1.7及以上 -maven3.x: maven 3.3以上版本相对稳定 -IntellijIDEA 2017以上,STS(安装了spring插件的elispce) -SpringBoot 1.5.9 RELEASE 要求jdk1.8 maven设置: 给maven的...

毛依依的博客 247

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Spring 学习 从入门到精通(二)

目录1:案例:数据源对象管理2:加载properties文件命名空间 解释:3:容器1:创建容器(两种):2:获取bean(3种):4:核心容器总结(重点)5:注解开发定义bean6:纯注解开发模式1:定义bean2:纯注解开发7:注解开发bean作用范围 与 生命周期管理1:bean作用范围2:bean生命周期8:注解开发依赖注入1:自动装配2:读取propertiesties文件9:注解开发管理第三方bean10:注解开发实现 为第三方bean注入资源1:第三方bean管理2:第三方bean依赖

weixin_47485309的博客 863

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring 入门学习二之IOC

今天来学习Spring ioc . 一、spring jar 包导入 在 spring 官网下载开发包 spring-framework-4.2.4.RELEASE,然后导入需要的 jar 包到项目 /lib/ 目录下。  二、代码开发 新建一个 'src/cn/sxt/bean/Hello.java'文件 package cn.sxt...

weixin_33754913的博客 109

Spring入门学习记录(二):入门注解开发

Spring入门注解,尝试怎么把实体类交给Spring管理,并了解一下自己新建的对象和Spring管理的对象之间的区别!

qq_59057509的博客 485

spring入门学习粗解(二)

spring入门全注解开发的步骤 ① 创建配置类来代替原来的xml配置文件 ② 创建一个User实体类,使用注解来设置属性值 ③ 创建一个User的Dao层接口及实现类,里面写一个findAll(),返回User ④ 创建一个User的Service层接口及实现类,里面写个方法getAll(),打印UserDao的findAll ⑤为了方便,在web层写一个UserController类,使用m...

qq_39139675的博客 234

【Spring AI 学习(二)】快速入门

本文介绍了如何使用Spring AI快速搭建环境并运行一个demo。主要内容包括:1. 环境准备(IDEA、JDK17、Maven3.9);2. 创建Maven工程和模块;3. 配置POM文件,添加Spring Boot和Spring AI依赖;4. 配置application.properties文件(设置API key等);5. 创建Controller和启动类;6. 启动项目并测试接口。通过访问/ai/generate接口,可以调用DeepSeek的AI模型进行问答交互,实现了基本的AI功能调用流程。

lichuangcsdn的博客 51

spring入门学习(二)

spring创建对象得时间: 在创建Spring容器时,就创建了配置文件中的所有对象 spring提供了获取容器中定义得对象得数量和名称,使用容器对象调用即可。 获取对象数量:getBeanDefinitionCount() 获取对象得名称,返回值是一个数组:getBeanDefinitionNames()。 同时spring也可以创建非自己定义得对象,创建对象默认调用得是无参得构造方法。 ...

lmd666的博客 144

Spring Web MVC的入门学习(二)

MVC的概念也逐渐发生了变化, View不再返回视图, 而是返回显示视图时需要的数据. 所以前面使用的 @RestController 其实是返回的数据。 @RestController = @Controller + @ResponseBody @Controller : 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理. @ResponseBody : 定义返回的数据格式为非视图, 返回⼀个 text/html 信息

m0_61876562的博客 1247

Spring入门学习二:控制反转IOC

控制反转IOC Spring环境搭建 本章节将在IDEA中开发,在Eclipse(STS)中创建项目基本是一样的,无此经验者,可以自行百度。 创建一个maven父项目 file-new-project 在父项目中导入jar包 我们选择已maven的方式导入,maven仓库地址:https://mvnrepository.com/。这里我们直接导入spring-webmvc的jar,它会自动将一些其他依赖的jar包导入,比如core,context,AOP,beans,expression,等。如果IDE

weixin_41549354的博客 235

Spring boot 学习二:入门

1: 需要的环境: JDK:至少JDK7才支持Spring boot maven:至少3.2 spring-boot:1.2.5.RELEASE(在pom.xml中指定) 2: 创建一个maven工程:其中pom.xml 文件如下:<?xml version="1.0" encoding="UTF-8"?> <...

weixin_30307267的博客 85

Spring入门学习(二、基于注解实现分层)

注解 Spring支持哪些注解呢? @Compinent:组件,标志一个普通的Spring bena类 @Controller:控制器组件 @service:业务层组件 @Repository:数据层组件 通过以上的注解,都可以将普通的java类标志成为一个bean,交给Spring的容器管理 注解的默认ID:类名小写 @Autowire:自动装配 @Resoource:按名称装配,如果...

时间ヾ永恒的博客 451

Spring AI Alibaba入门学习(二)

Ollama是一个开源的、轻量级的本地大语言模型运行和管理平台,让你能在自己的电脑上轻松运行各种开源模型(如Llama 3、DeepSeek、Qwen等),就像Docker管理容器一样方便。

weixin_39764056的博客 363
上一篇: Spring入门学习(一)
下一篇: Spring入门学习之Spring MVC(part 1)
java_hxc_sz
博客等级 码龄10年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值