Spring学习笔记(8)----属性注入的方式

Spring中属性注入的方式有三种:

1.使用属性setter方法注入

2.使用构造器注入

3.使用注解方式注入

 

使用属性setter方法注入

使用属性setter方法注入就是给属性添加set()方法,在前面都是使用这种方法。

package com.szy.spring.service;

import com.szy.spring.dao.PersonDao;

public class UserServiceImplBySetter implements UserService
{
	private PersonDao personDao;
	
	public void show()
	{
		personDao.show();
	}
	public PersonDao getPersonDao()
	{
		return personDao;
	}
	public void setPersonDao(PersonDao personDao)
	{
		this.personDao = personDao;
	}
}

 

然后在配置文件中如下配置

<bean id="personDao" class="com.szy.spring.dao.PersonDaoBean"/>
	<!-- 使用属性Setter方法注入配置 -->
	<bean id="userService1" class="com.szy.spring.service.UserServiceImplBySetter">
		<property name="personDao" ref="personDao"></property>
	</bean>

 

使用构造器注入

使用构造器注入就是在类中添加含参构造函数

package com.szy.spring.service;

import com.szy.spring.dao.PersonDao;

public class UserServiceImplConstructor implements UserService
{
	private PersonDao personDao;
	private String name;
	
	public UserServiceImplConstructor()
	{
	}

	public UserServiceImplConstructor(PersonDao personDao, String name)
	{
		this.personDao = personDao;
		this.name = name;
	}

	public void show()
	{
		personDao.show();
		System.out.println("name属性:"+name);
	}
}

 

下面就是在配置文件中添加配置信息,给每个参数注入值

<bean id="personDao" class="com.szy.spring.dao.PersonDaoBean"/>
	<!-- 使用构造器参数方法注入配置 -->
	<bean id="userService2" class="com.szy.spring.service.UserServiceImplConstructor">
		<constructor-arg index="0" type="com.szy.spring.dao.PersonDao" ref="personDao"/>
		<constructor-arg index="1" value="Kuka"/>
	</bean>

 注意:constructor-arg index是从0开始的

 

使用注解方式注入

如果使用前面的两种方法,配置文件将会显得很臃肿,因此我们可以使用注解的方式注入,使用注解方式注入有两种方法,第一种使用javax.annotation.Resource中提供的注解方式方法如下:

package com.szy.spring.service;

import javax.annotation.Resource;

import com.szy.spring.dao.PersonDao;

public class UserServiceImplByAnnotation4Resource implements UserService
{
	//@Resource默认是按照名称装配,找不到与名称匹配的bean时按类型装配
	@Resource(name="personDao")private PersonDao personDao;

	public void show()
	{
		personDao.show();
	}
//	下面方法同样可以
//	@Resource
//	public void setPersonDao(PersonDao personDao)
//	{
//		this.personDao = personDao;
//	}
	
}

 

此时配置文件要做相应的改变

<?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"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
				http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	<context:annotation-config/>
	<bean id="personDao" class="com.szy.spring.dao.PersonDaoBean"/>
	<bean id="userService" class="com.szy.spring.service.UserServiceImplByAnnotation4Autowired">
	</bean>
</beans>

 

 注意添加这句配置信息

<context:annotation-config/>

第二中方式就是使用spring提供的注解方式

org.springframework.beans.factory.annotation.Autowired;

注入使用时需要导入spring目录lib\j2ee\common-annotations.jar这个包

使用方法如下:

package com.szy.spring.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

import com.szy.spring.dao.PersonDao;

public class UserServiceImplByAnnotation4Autowired implements UserService
{
	//@Autowired默认使用类型进行装配,
	@Autowired private PersonDao personDao;
//	如果使用按名称进行装配,则需要如下
//	@Autowired @Qualifier("personDao")private PersonDao personDao;
	public void show()
	{
		personDao.show();
	}
	
}

 

配置文件和上面一样。

 

在使用时建议使用@Resource,因为@Resource不依赖于spring框架。

【Tessent Shell Users Manual】【Ch3】Design Introspection and Editing(未完待续) Tessent Shell 提供了一系列用于检查(examining/introspecting)和编辑design的命令。 阅读详情

相关推荐

Python实战:超分辨率图像质量评估全攻略——PSNR、SSIM、LPIPS与NIQE的代码实现与优化

本文详细介绍了在Python中实现超分辨率图像质量评估的完整方案,涵盖PSNR、SSIM、LPIPS和NIQE四大核心指标。通过模块化代码设计、多进程并行处理和GPU加速优化,帮助开发者构建高效、可扩展的评估系统,并提供了实战避坑指南与结果解读方法。

weixin_29053073的博客 475

Spring属性注入的几种方式

1.方式一:通过set方法注入 <bean id="user" class="com.fuke.domain.User"> <property name="username" value="张三"/> <property name="password" value="1234"/> </bean> @...

雨天的麦子的博客 861

生态位宽度计算&可视化展示(R语言)

物种的生态位越宽,该物种的特化程度就越小,倾向于泛化种(generalist species);物种的生态位越窄,倾向于是一个特化种(specialists species)。生态位宽度是指物种(或其它生物单位)在群落中所利用的各种不同资源的总和。本篇所使用为生态位宽度指数即**Levins的生态位宽度指数。

weixin_53705272的博客 4435

Spring框架基础-01

Spring框架 优点 是一个开源的免费框架 是一个轻量级的,非入侵的框架 控制反转(IOC),面向切面编程(AOP) 支持事务的处理 想学springboor和springcloud就必须学会spring和springMVC作为基础 IOC (对象由spring来创建,管理,支配) 个人理解 控制反转:就是依赖对象的方式变了,原来是程序员来控制服务的实现,现在是由用户来实现,整体结构没有变! 不用再new对象了,全都交给spring去创建 要实现不同的操作,只需要在xml配置文件中改动即可 无参构

weixin_45750762的博客 664

数学史学习资料:史前数学

著名物理学家伽莫夫(宇宙大爆炸理论以及核聚变理论的提出者)在他的科普书《从1到无穷大》中举了这样一个例子。两个原始部落的酋长比赛,看谁说的数字大。第一个酋长说了三,第二个酋长想了半天,然后说你赢了。你今天听起来觉得这两个人真可笑,至少说出四,岂不就赢了?但是对这两位酋长来讲,所拥有的东西就很少超过三个,比三个多的东西他们就觉得没有必要数清楚了,就用许多来形容了。也就是说,他们生活的环境限制了他们的认知。

howard2005的专栏 902

控制科学与工程(自动化)保研经验【1】——预备篇

个人情况 学校:中末流211 专业:自动化(学科评估B-) 年份:2019 排名:4/128 绩点:4.16/5 竞赛:三个国二(包括数模国赛美赛)、两个省一(机器人、电子设计竞赛) 【本科期间竞赛做的比较多,是我的一大亮点,可以在筛简历这关适当弥补专业排名的不足】 科研:一个校级的大创项目(水) 夏令营报名:中科大科学岛、中科大本部、自动化所、沈自所、北航(仪器17系)、山大、浙江大学、南开、同...

Control Everything 1万+

Spring基础之属性注入总结

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/53888749冷血之心的博客) Spring是开源的轻量级框架,核心主要两部分: (1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用...

冷血之心的博客 1万+

【深度学习新浪潮】什么是system 1和system 2?

System 1(快速生成)指大模型直接基于输入生成响应,无需显式中间推理步骤。例如,GPT-4等模型在默认状态下通过Transformer直接输出结果,擅长快速回答简单问题或生成连贯文本,但在复杂逻辑任务中可能出错。这类模型的内部计算以向量形式隐式进行,难以处理符号推理等需要离散决策的任务。System 2(慢速推理)指模型通过生成中间token(如思维链、分步推导)或多次调用LLM进行复杂推理。

专注:太空算力、AI infra、异构调度、大模型成本工程 929

spring 对属性的四种注入方式

spring 对属性的四种注入方式 1.set方式注入: 注意:这种方式是我比较熟悉的方式,也是我经常用到的方式,直接使用name和value进行注入操作。 如果是引用对象类型,使用ref将配置好的bean对象注入。 `&lt;bean name="user" class="com.itheima.domain"&gt; &lt;property name="username" v...

zcdnswzhda的博客 348

YOLO26涨点改进 | 全网首发Conv独家改进篇 | CVPR 2025 | 引入GCConv卷积改进YOLO26,含GCC3k2二次创新,能够捕捉更加丰富和复杂的特征信息,助力高效涨点

本文提出了一种基于GCConv模块的YOLO26目标检测模型改进方案。GCConv模块通过多路径结构增强特征学习能力,在训练阶段采用垂直多卷积和水平多路径配置,推理时重参数化为单一3x3卷积,显著提升推理速度而不损失性能。实验表明,该模块在复杂场景和多尺度目标检测任务中表现优异,特别适合资源受限的实时应用场景。文章详细介绍了GCConv的网络结构、核心代码实现、YAML配置文件修改方法,并提供了两种改进方案(GCConv和GCC3k2)的具体配置指导。

Ai缝合怪、助力小伙伴高效发论文 321

ADAS方案设计-CAN网络管理与休眠唤醒机制

文章摘要:本文介绍了车载控制系统的五种工作模式及其转换条件,包括睡眠模式、准备睡眠模式、就绪睡眠模式、正常工作模式和重复消息状态。系统唤醒条件包括接收到网络管理报文或电源ON档信号,休眠条件则需满足电源OFF档、功能完成等多重要求。针对下挂节点的网络管理报文发送规则,详细说明了不同状态下的报文发送策略,特别是在哨兵模式、OTA模式等特殊场景下的处理方式。系统在满足休眠条件后会立即停止发送下挂节点网络管理报文,确保电源管理的有效性。

xiandang8023的博客 325

Spring中属性注入的几种方式以及复杂属性的注入

在Spring框架中,属性的注入我们有多种方式,我们可以通过构造方法注入,可以通过set方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象、数组、List集合、map集合、Properties等,我们也都有相应的注入方式。 OK,接下来我们就来看看这么多不同的注入吧! 三种属性注入方式 构造方法注入 构造方法注入和p名称空间注入这两种方式我们在开发中用的并

江南一点雨的专栏 2万+

系统架构设计师重难点知识脑图

大家都知道现在的软考自从变成机考后,越来越难了,教程上的内容不仅全还细,几乎任何内容都有可能考,出题老师主打一个出其不意,比如2024年5月考试,连UML时序图的片段都考,这。软件工程、系统架构基础知识、系统质量属性与架构评估、软件架构的演化和维护、信息系统架构设计、层次式架构设计、云原生架构设计、面向服务架构设计、安全架构设计、大数据架构设计等。所以对于教程上的任何知识点,都需要去记忆。因此我在这里制作了一个脑图,将所有知识点集中在一个脑图中,通过首词组句法,记忆背诵,通过一个个的展开节点,加强记忆。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 1104

Spring属性注入的三种方式(超详细)

属性注入的三种方式使用set方法进行注入使用有参构造函数进行注入使用p名称空间注入 首先了解下面两个名词的含义: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 DI:依赖注入(Dependen

『愚』的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

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

spring的两种注入方式:属性注入、构造注入

所谓注入,说白了就是如何赋值。因为spring框架中是控制反转的,你没有办法new对象,也就没有办法传参数,那么spring它是如何知道你想传的参数呢?这就是注入研究的问题。 属性注入 利用私有属性的setter方法完成。 其实比较好理解,像前一篇博客我写到的 <bean id="user" class="com.wm103.ioc.User"> <property n...

AAS48的博客 2746

精雕软件(JDpaint) 5.5 绿色版

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

Spring属性注入的5种方式

今天我们来说一下Spring的属性注入 对于类成员变量来说,注入方式有三种 -构造函数注入 -属性setter方式注入 -接口注入 Spring支持前面两种,并且还支持 p名称空间注入 、spel属性注入、复杂类型注入,接下来我们来介绍一下这些注入方式 第一种:构造方法注入 ● 通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例在实例化后就可以使用 ● 构造器注入在 《cons...

qq_42137956的博客 1199

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

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

Spring——Bean管理-xml方式进行属性注入

Spring中bean管理使用xml方式进行属性注入的7种方式

一起加油吧~ 2921

Spring三种注入对象的方式对比

获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注入 对象装配(对象注入)的实现方法以下 3 种: 属性注入 构造方法注入 Setter 注入 接下来,我们分别来看,下面我们按照实际开发中的模式,将 Service类注⼊到Controller类中 Spring的注入方式属性注入setter注入构造方法注入三种注入方式对比 公共类: package com.bit.Model; /** * 表示一个实体类,不存在Spring当中 */ public class Us.

沐北的博客 3760

【Spring】Spring的IOC依赖注入的四种方式

这几天学了Spring6,感觉到了Spring的强大和便捷。写此篇文章是为了总结一下IOC的四种属性注入方式,也是为了以后可以翻看,每日温习一遍,孔子说过:“温故而知新,可以为师矣”。各位朋友们在浏览此篇博客时可以温习一下IOC的知识。

qq_46096136的博客 9141

【spring框架】bean属性注入方式

1 前言 spring框架注入属性的方法主要有如下3种: property 注入 p命名空间注入 构造器注入 2 属性注入方法 待注入的 bean 属于 Person 类,如下: Person.java public class Person { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) {

little_fat_sheep 907

Spring给对象属性赋值的三种注入方式

bean类 package com.zxh.model; public class Student { private String username; private String password; private Integer id; public String getUsername() { return username; }...

赵小白的博客 1493

spring依赖注入三种方式

spring依赖注入

qishiheyongshi的专栏 1万+

Spring高级注入之属性值注入

实际应用中,某个实例的属性可能是另一个对象的一个属性,Spring支持将bean实例的属性值直接赋值给一个变量属性值的注入,是通过PropertyPathFactoryBean完成的,PropertyPathFactoryBean用来获取目标bean的属性,获得的值可以注入到其他bean,也可以定义成新的bean实体类:package Bean.superIOCparam;publ

我的世界我的梦 8273

使用Spring的注解方式注入属性

使用Spring的注解方式注入属性 @Component 描述Spring框架中的Bean,除了 @Component 外Spring提供了3个功能基本等效的注解: @Repository 用于对DAO实现类进行标注 @Service 用于对Service实现类进行标注 @Controller 用于对Controller实现类进行标注 @Value 进行属性注入 @Autowired 注入其...

ZX9727的博客 1672

Spring中属性注入的几种方式以及复杂属性的注入详解

在spring框架中,属性的注入我们有多种方式,我们可以通过set方法注入,可以通过构造方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象、数组、List、Map、Properties等,我们也都有相应的注入方式。 OK,接下来我们就来看看这么多不同的注入吧! 三种属性注入方式 1 set方法注入 set方法注入是我们开发中用的比较多的一种注入方式,举个????: 假...

Beryl的博客 338

Spring属性注入

依赖 一、配置在application.properties下 1.配置文件application.properties user.name=Alvin user.gender=男 user.age=20岁 2.测试类User.java //将User类注入到Spring容器 @Component public class User { //绑定属性 @Value("...

LukeyAlvin的博客 3074
上一篇: Spring学习笔记(7)----装配各种集合类型的属性
下一篇: Spring学习笔记(9)----让Spring自动扫描和管理Bean
coolszy
博客等级 码龄19年 2659粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值