登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
spring6-多种类型的注入方式
spring6-多种类型的注入方式
[ 复制链接 ]
倡粤
3 小时前
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
OCP原则
ocp指开闭原则,对扩展开放,对修改关闭。是七大原则中最基本的一个原则。
依赖倒置原则(DIP)
什么是依赖倒置原则
核心是面向接口编程、面向抽象编程, 不是面向具体编程。
依赖倒置原则的目的
降低耦合度,提高扩展力
什么是控制反转
控制反转:Ioc(Inversion of Controll),一种编程思想、设计模式。为了降低程序耦合度
反转有两点:
不在程序中采用硬编码的方式new对象,把创建对象交给别人(UserService userService = new UserServiceImplForMysql())。
不在程序中采用硬编码的方式维护对象关系。
spring框架
spring实现了Ioc,因此可以创建和维护对象见的关系。
控制反转实现方式主要有
依赖注入(Dependency Injection DI)
依赖注入的方式有以下方式:
Set注入(执行Set方法赋值)
构造方法注入(执行构造方法赋值)
依赖注入中的“依赖”、“注入”的含义
依赖:A对象和B对象的关系
注入:是一种手段,通过这种手段让A和B产生关系。
依赖注入的实现方式有:set注入和构造方法注入。
set注入
配置文件配置bean
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean>
复制代码
在类中写set方法
package com.ali.service;
import com.ali.dao.UserDao;
public class UserService {
private UserDao userDao;
// set注入需要提供一个set方法,方法名以set开头,spring容器调用这个set方法注入UserDao
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void saveUser(){
userDao.insertUser();
}
}
复制代码
这样即可注入成功。
注入外部bean
<bean id="orderDao" />
<bean id="orderService" >
<property name="orderDao" ref="orderDao"/>
</bean>
复制代码
注入内部bean
<bean id="orderDao" />
<bean id="orderService" >
<property name="orderDao" ref="orderDao"/>
</bean>
复制代码
注入简单类型
<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>
复制代码
实际开发中,一般不会吧Date类型当作简单类型,会使用ref来注入Date类型
级联属性赋值
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean><bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>
复制代码
注入数组
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> 吃<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>喝 <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean><bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>
复制代码
注入List和Set类型
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> 张三<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>里斯<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>詹姆思 <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="orderDao" />
<bean id="orderService" >
<property name="orderDao" ref="orderDao"/>
</bean> 北京<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>上海<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>广州 <bean id="orderDao" />
<bean id="orderService" >
<property name="orderDao" ref="orderDao"/>
</bean>
复制代码
注入Map集合
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean>
复制代码
注入Properties类型
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> v1<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>v2<bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>v3 <bean id="orderDao" />
<bean id="orderService" >
<property name="orderDao" ref="orderDao"/>
</bean>
复制代码
注入null和空字符串
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean> <bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean><bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>
复制代码
注入特殊字符串
<bean id="userDao" >
</bean>
<bean id="userService" >
<property name="userDao" ref="userDao"/>
</bean><bean id="userBean" >
<property name="name" value="张三"></property>
<property name="age" value="30"></property>
<property name="password" value="123456"></property>
</bean>
复制代码
构造注入
配置文件配置bean
[code]
spring6
多种
类型
注入
方式
相关帖子
Zod:TypeScript 类型守卫与数据验证
FastAPI依赖注入深度指南:从基础依赖到预处理与后处理的艺术
不同Django服务器和部署方式的性能调研
一次内网开发环境访问方式的改进实践:使用 FRP 替代远程桌面
c#实现包裹扣面单的几种方式
Apache Struts2 OGNL RCE注入
TINYINT(1) 类型的字段,明明数据存的是 2,为什么查出来是 true
RPC 代理远程注入dll获得shell
从HTML注入到CSRF:一次漏洞组合拳实战
Java中的数据类型
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Zod:TypeScript 类型守卫与数据验证
6
132
呶募妙
2026-01-04
安全
FastAPI依赖注入深度指南:从基础依赖到预处理与后处理的艺术
12
714
绂染
2026-01-09
业界
不同Django服务器和部署方式的性能调研
13
1003
鞭氅
2026-01-13
业界
一次内网开发环境访问方式的改进实践:使用 FRP 替代远程桌面
13
871
致掣
2026-01-14
业界
c#实现包裹扣面单的几种方式
2
7
马璞玉
2026-01-15
业界
Apache Struts2 OGNL RCE注入
7
404
缢闸
2026-01-16
业界
TINYINT(1) 类型的字段,明明数据存的是 2,为什么查出来是 true
5
221
国语诗
2026-01-19
安全
RPC 代理远程注入dll获得shell
3
502
命煦砌
2026-01-26
安全
从HTML注入到CSRF:一次漏洞组合拳实战
0
3
蝙俚
2026-01-29
安全
Java中的数据类型
0
813
赖娅闺
2026-02-02
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
倡粤
3 小时前
关注
0
粉丝关注
17
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
宋子
9939
6
韶又彤
9952
7
闰咄阅
9993
8
刎唇
9995
9
蓬森莉
9921
10
俞瑛瑶
9998
查看更多
今日好文热榜
853
GIM 2.0 发布:真正让 AI 提交消息可定制、
170
C# 设置 Word 文档背景颜色/背景图
842
妙手ERP荣膺TikTok Shop 2025 H1“优质招商
158
题解:P15049 [UOI 2022 II Stage] 图 2
973
vue 甘特图 vxe-gantt 自定义任务条插槽模
239
Qt 技巧笔记(四)QVector 的底层原理与高
713
零门槛搭建部署 OpenClaw/Moltbot/Clawdbot
762
如何保障分布式IM聊天系统的消息可靠性(即
985
【面试题】MySQL 中 count(*)、count(1) 和
545
MWGA让千亿行代码在Web端“复活”!
27
spring6-多种类型的注入方式
661
LLVM Pass快速入门(二):运行第一个pass
227
LLVM Pass快速入门(二):运行第一个pass
637
MySQL 5.6 2000 万行高频读写表新增字段实
272
电商带货三步式快速开播工具:全能播Live O
545
上传本地文件到linux服务器的三种方法对比
936
用 Vue3 + fetch-event-source 打造流式 AI
758
吴恩达深度学习课程五:自然语言处理 第三
813
Java中的数据类型
504
Google正式上线Gemini In Chrome,国内环境