每天学一点spring—DI&注解实现IoC(3)

FPGA新手避坑指南:手把手教你搞定RTL8211千兆网PHY的时序配置(附Verilog代码) 本文详细解析了FPGA与RTL8211千兆网PHY芯片的时序配置问题,重点介绍了TXDLY/RXDLY引脚设置、FPGA发送端和接收端的Verilog实现,以及调试与验证的完整流程。通过硬件电路设计和代码示例,帮助开发者解决网络连接不稳定、丢包等常见问题,提升千兆网通信的稳定性。 阅读详情

每天学一点spring—DI&注解实现IoC(3)

开篇前讲一个小笑话:在小编开始入门的时候,我还信誓旦旦的认为自己能够日更,但现在看来并不尽人意。不过最近的状态起来了,我要将这些东西分享出来才行呢。前段时间写了一篇LoC的简单实例,今天开始说一下DI和注解。

1、通过XML的DI

DI——Dependency Injection全称为**“依赖注入”。首先明确一点,DI其实跟LoC是一个概念,只是DI是实现它的手段方式**。spring通过使用依赖注入来实现LoC。

1.1 注入分类

bean实例在调用无参的构造方法后,通过使用bean对象的属性进行初始化。初始化是由容器自动完成的,称为注入。接下来还有几种方法注入。

1.1.1 通过set方法注入

set注入也叫做设值注入,是指通过setter方法传入被调用者的实例。这种注入方法简单、直观,因而在Spring的依赖注入中大量使用。

1.1.2 通过构造方法

构造注入指的是在构造调用者实例的同时,完成被调用者的实例化。使用构造器设置依赖关系。

1.1.3 自动注入

对于引用类型属性的注入,也可以不在配置文件中显示的注入。可以通过标签表示。

设置 autowire 属性值,为引用类型属性进行隐式自动注入(默认是不自动注入引用类型属性)。根据 自动注入判断标准的不同,可以分为两种:

  • byName:根据名称自动注入
  • byType: 根据类型自动注入
1.1.3.1 byName

当配置文件中被调用者 bean 的 id 值与代码中调用者 bean 类的属性名相同时,可使用byName 方式。此时容器自动将被调用者bean注入给调用者bean。容器通过调用者的bean类的属性名与配置文件的被调用者bean的id进行比较而实现自动注入。

1.1.3.2 byType

使用 byType 方式自动注入,要求:配置文件中被调用者 bean 的 class 属性指定的类,要与代码中调用者bean 类的某引用类型属性类型同源。

2、基于注解类实现Loc

对于DI使用注解,将不再需要在spring配置文件中声明bean实例。Spring中使用注解需要在原有spring运行环境的基础上再做一些改变。

2.1 @Component

在类上添加注解@Component表示该类创建对象的权限交给Spring容器。注解的value属性用于指定bean的id值,value可以省略。

@Component 不指定 value 属性,bean 的 id 是类名的首字母小写。

除此之外,Spring中还提供了其他3个用于创建对象的注解:

  • @Repository : 用于dao实现类的的注解
  • @Service: 用户service实现类的注解
  • @Controller: 用于controller实现类的注解

这三个注解与@Component 都可以创建对象,但这三个注解还有其他的含义。

@Service创建业务层对象,业务层对象可以加入事务功能,

@Controller注解创建的对象可以作为处理器接收用户的请求。

@Repository,@Service,@Controller 是对@Component 注解的细化,标注不同层的对象。即持久层对象,业务层对象,控制层对象。

2.2 包扫描

包扫描要求需要在Spring配置文件中配置组件扫描器,以便于用在指定的基本包中扫描注解。如果没有报扫描,那么添加的创建对象注解不会生效。

2.2.1 通过多个context:component-scan指定不同的包路径
<context:component-scan base-package="com.xaf.dao"></context:component-scan>
<context:component-scan base-package="com.xaf.service"></context:component-scan>
<context:component-scan base-package="com.xaf.controller"></context:component-scan>
2.2.2 通过指定base-package的值使用分隔符
<context:component-scan base-package="com.xaf.dao,com.xaf.service,com.xaf.controller"></context:component-scan>
<context:component-scan base-package="com.xaf.dao;com.xaf.service;com.xaf.controller"></context:component-scan>
2.2.3 base-package指定到父类包

base-package 的值表示基本包,容器启动会扫描包及其子包中的注解,当然也会扫描到子包下级的子包。

所以 base-package 可以指定一个父包就可以。但不建议使用顶级的父包,扫描的路径比较多,导致容器启动时间变慢。指定到目标包和合适的。也就是注解所在包全路径。

<context:component-scan base-package="com.xaf"></context:component-scan>

2.3 属性注入

在一个类中属性上面或者在setter方法上面设置一个@value的注解,它将用于指定要注入的值。

2.4 byType自动注入@Autowired

需要在引用属性上使用注解@Autowired,该注解默认使用按类型自动装配 Bean 的方式。使用该注解完成属性注入时,类中无需 setter。当然,若属性有 setter,则也可将其加到 setter 上。

2.5 byName自动注入@Autowired和@Qualifier

需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的 value 属性用于指定要匹配的 Bean 的 id 值。类中无需 set 方法,当然也可加到 set 方法上。

@Autowired 还有一个属性 required,默认值为 true,表示当匹配失败后,会终止程序运行。若将其值设置为 false,则匹配失败,将被忽略。未匹配的属性值为null。

2.6 自动注入@Resource

Spring提供对JDK中@Resource注解的支持。首先@Resource既可以根据名称匹配Bean,也可以通过类型匹配Bean。当然默认下首先是进行名称匹配的。只有名称匹配不到的情况下才会开始进行类型匹配。

下面再自己创建一个控制层的java文件

Public class adminController{
    @Resource(name="adminController")//JDK高于1.6版本才可以使用
    private AdminService adminService;
}

此时表示的是会寻找同样为adminController的类。

以上是个人对loc的一个小描述,希望大家能够喜欢。下面文章会进行对AOP核心的讲解。谢谢大家~~

大中型超市收银系统(可直接运行) 光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开 立即下载

相关推荐

14自由度汽车动力学模型

多体系统分解簧上质量刚体:包含车身主体,具有6个自由度(x/y/z平移 + 俯仰/侧倾/横摆旋转)四个簧下质量刚体:每个车轮独立建模,含垂直跳动(z向)和旋转(绕z轴)自由度总自由度:6(车身) + 4×2(车轮) = 14自由度。

chao189844的博客 1197

通过注解实现IOC和DI

一、通过注解实现IOC:IOC:控制反转,将对象的创建、初始化、销毁等过程交给spring容器来管理. 运用四个文件: (1)applicationContext.java (2)Person.java (3)Pet.java (4)Window.java (1)applicationContext.java <?xml version="1.0" encoding="UTF-8"?&...

Jenny_xuexi的博客 376

stackelberg博弈_博弈论、多智能体、强化学习(随便记点东西)

多智能体应用场景:已实现:游戏AI。正在努力:UAV,物资运输,快递分发,交通系统。未来:社会学,预测群体行为,城市区域合作,国际关系。博弈论基本定义:玩家集合: 策略集合: 收益函数: 囚徒困境:两智能体矩阵博弈坦白抵赖坦白1,13,0抵赖0,32,2占优策略与最佳应对:上表中两者均具有占优策略,即无论如何都应该选坦白。那么构造下表。坦白抵赖坦白1,13,0抵赖0,12,2对于玩家一来说,坦白...

weixin_39611722的博客 2997

Spring——IOC + DI功能实现(完全注解开发)

Spring——IOC + DI功能实现(完全注解开发)

贝尔摩德苦艾酒 5314

CocosCreator3.8.2实战:5分钟搞定多分辨率适配与横竖屏自动翻转(附完整Demo)

本文针对CocosCreator3.8.2开发者,提供了一套5分钟快速集成、开箱即用的多分辨率屏幕适配与横竖屏自动翻转解决方案。通过封装好的ScreenAdapter组件,开发者无需处理复杂计算,即可实现等比缩放或拉伸全屏两种主流适配模式,并自动响应设备旋转,有效解决移动端UI在不同屏幕比例和方向下的显示问题。文末附完整Demo。

z4a5b6的博客 723

手把手教你学Simulink--基于Simulink的开关磁阻电机电流斩波控制仿真建模

特点:定子和转子均由普通硅钢片叠压而成,没有永磁体或绕组在转子上。工作原理:利用转子旋转时不同位置的磁阻变化产生转矩。控制挑战:由于SRM的高度非线性和磁饱和效应,需要复杂的控制算法来优化性能。利用Simscape Electrical中的模块构建SRM的物理模型,配置参数如电阻、电感等。matlab深色版本% 添加SRM电机模块根据实际需求调整电机参数。通过上述步骤,我们简要介绍了如何基于Simulink进行开关磁阻电机的电流斩波控制仿真建模。

MHD0815的博客 306

Spring 注解、IOC(注解方式)、DI(注解的方式)

一、注解、IOC(注解方式)、DI(注解的方式) 1、注解的概念 注释:给人看的提示信息,程序不看也不执行。 注解:主要给程序看的信息,程序会执行。 通常用来在某种程度上,尤其是框架上,注解用来代替配置文件,实现轻量级配置。 注解是从JDK5.0开始提供的特性。 2、几个常见的注解 (1)@Override 子类继承父类,重写父类方法的注解 (2)@Deprecated 过时注解 (3)@SuppressWarnings 消除黄色警告 3、自定义注解 自定义一个注解的过程类似于定义一个接口 可

gezongbo的博客 804

MIMO-OFDM通信系统性能仿真及MATLAB实现

将MIMO和OFDM技术结合起来,可以充分利用两者的优点,进一步提高无线通信系统的性能。在MIMO-OFDM系统中,多个天线同时发射多个子载波,称为多天线多载波(MIMO-OFDM)系统。随着无线通信技术的不断发展,MIMO-OFDM技术因其高效、可靠和适应性等优点已被广泛应用于新一代通信系统中。本篇文章旨在介绍MIMO-OFDM通信系统的基本原理及其性能评估方法,并结合MATLAB提供相关代码实现。本篇文章介绍了MIMO-OFDM通信系统的基本原理和性能评估方法,并结合MATLAB提供了相关的实现代码。

学习使你进步。 2216

狂神说Spring04:自动装配

狂神说Spring系列连载课程,通俗易懂,基于Spring最新版本,欢迎各位狂粉转发关注学习。禁止随意转载,转载记住贴出B站视频链接及公众号链接!Bean的自动装配自动装配说明自动装配是...

狂神说 1万+

VTK:vtkAssembly用法实战

VTK:vtkAssembly用法实战程序输出程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkAssembly.h> #include <vtkAxesActor.h> #include <vtkCubeSource.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkOrientation

希望我的博客,能帮上你解决学习中工作中所遇到的问题 932

NPU性能榨取手把手教程:RK3588上YOLOv5s多线程部署与120FPS极限探索

RK3588 YOLOv5s多线程部署优化指南 本教程深入解析RK3588芯片上YOLOv5s模型的高性能多线程部署方案。RK3588作为瑞芯微旗舰AIoT芯片,内置三核NPU(6TOPS算力)和硬件加速器(RGA/VPU),为AI推理提供强大支持。通过线程池技术,我们将视频处理的读取、推理、后处理等环节解耦并行,显著提升系统吞吐量。教程详细介绍了从PyTorch到RKNN格式的模型转换流程、INT8量化方法,以及基于RKNN C++ SDK的YOLOv5推理核心实现,帮助开发者最大化发挥RK3588的AI

LXY_LOVE36的博客 973

五、Spring Ioc 注解开发

spring ioc 注解

l_zerol的博客 232

把 SAP OData 查询模式讲透:从 $select 到 $expand 的设计、实现与性能边界

摘要:本文深入探讨SAP生态中OData查询模式的核心设计与实现要点。文章指出,OData不仅是接口协议,更是HTTP、REST与数据模型的统一语言,其性能关键取决于查询选项($select、$filter等)的设计与实现质量。重点分析了$select的投影优化、$orderby的排序语义、$filter的数据库下推策略,以及$count的高效计数方法。通过具体示例和最佳实践,强调应将查询逻辑尽量下推至数据库层,避免在ABAP应用层处理大数据集,从而提升服务性能、降低资源消耗,实现Clean Core架构理

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

《Spring》实战——2.IOC/DI&装配

Day_01 Bean的定义与装配;(XML、Config.java、自动装配 3种方式) 1. 自动装配(注解)-推荐 Spring从两个角度来实现自动化装配: (1)组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。 (2)自动装配(autowiring):Spring自动满足bean之间的依赖。 定义bean? (1)先定义组件(bean)类的接口(为了解耦); (2)然后在实现类的类声明上面加一句注解@Component,则这个

娜娜米的博客 313

温度PID控制PLC程序

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring入门(IOC)

什么是IOC? IOC 容器具有依赖注入功能的容器,它可以创建对象,IOC 容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。在Spring中BeanFactory是IOC容器的实际代表者。 原理 xml解析,工厂模式,反射 小结:IOC就是将Bean(对象)的创建和管理交给Spring,通过1.解析xml获取类名和属性方法 2.通过反射获取类 3. newInstanc

qq_36255655的博客 227

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

01 Spring简介与IOC推导

1、Spring 1.1、简介 Spring:春天----->给软件行业带来了春天! Rod Johnson,Spring Framework创始人,著名作者。很难想象Rod Johnson的学历,真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。 Spring理念:使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架 Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者

weixin_43215223的博客 222

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SSM之spring框架

一、概述   spring框架在我看来我们只要做三件事就好了。就是IOC(Inversion of Control 控制反转)、DI(Dependency Injection 依赖注入)、AOP(Aspect Oriented Programming 面向切面编程)。 二、详细介绍 1、IOC(Inversion of Control 控制反转)   控制反转并不是什么技术问题,而是一种思想。在传统Java开发中,对象都是开发人员自己维护,还有依赖关系也要开发人员自己注入。现在用了spring之后,对象

阿波的博客 403

Spring简介以及常见的面试题(三)

Spring注解方式实现IOC和DI 1.Spring注解 Spring除了默认的使用xml配置<bean>标签的方式实现配置外,也可以通过注解的方式来实现配置,这种方式效率更高,配置信息清晰,代码在哪对应的配置也在哪儿。 所谓注解就是程序看的提示信息,很多时候都用来作为轻量级配置方式 Spring注解方式实现IOC a. 导入开发jar包 b. 编写配置文件,并导入context约束 <?xml version="1.0" encoding="UTF-8"?> <beans

Niklaus的博客 159

(JavaWeb)Spring基础

本笔记用来记录学习 颜群老师的 Spring课程所做笔记 Spring

cai980273879的博客 403

07、Spring中XML配置和JavaConfig配置比较

在 Spring 3.0 开始,Spring 官方就已经开始推荐使用 Java 配置来代替传统的 XML 配置了,它允许开发者将 bean 的定义和 Spring 的配置编写到到 Java 类中,不过似乎在国内并未推广盛行。当 Spring Boot 来临,人们才慢慢认识到 Java 配置的优雅,但是,也仍然允许使用经典的 XML 方式来定义 bean 和 配置 Spring

执手天涯@的博客 847

Spring项目XML文件使用常见介绍

=""=""=""

Y 527

xml的DI和注解的DI

DI-----分为2种---XMLDI和注解DI 一 DI的原理  DI的基本原理:对象之间的依赖关系只会通过三种方式:构造函数参数,工厂方法的参数以及构造函数或工厂方法创建的对象属性设置。因此,容器的工作哦就是在创建Bean时注入所有的依赖关系。相对于由Bean自己控制其实例化,直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)这三种自主控制依赖关系注入的

qq_36074043的博客 342

01_快速上手Spring

1 spring 简介 Spring理念 : 使现有技术更加实用 . 本身就是一个大杂烩 , 整合现有的框架技术 官网 : http://spring.io/ 官方下载地址 : https://repo.spring.io/libs-release-local/org/springframework/spring/ GitHub : https://github.com/spring-projects 优点 1、Spring是一个开源免费的框架 , 容器 . 2、Spring是一个轻量级的框架 , 非侵入

一个搬砖工人 219

Spring总结

SpringSpring依赖于spring工厂,管理对象创建,可以自动new对象,是个轻量级项目(轻量级:学习成本低,记东西得少-_-!) IoC:Inverse of Controller(控制反转)对象创建的控制权转移到程序的外部(Spring),完成解耦 DI:Dependency Injectjion 依赖注入(依赖谁就注入谁)IoC的目的是为了解耦,对象创建的控制权转移到程序外部,需要使用

六弦织乐的博客 359

01-Spring依赖

主pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http...

heixue666的博客 171

Spring

1.什么是Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的Jav...

180
上一篇: 每天一点儿时间学习Spring框架系列—IOC(2)
下一篇: Redis进阶介绍—(3)
Xiao艾扶
博客等级 码龄7年 187粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Xiao艾扶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值