spring的常用注解以及什么叫IOC

Springboot学习日志2(注解) 在 Java 和其他语言进行通信的时候,需要将对象转化成一种通用的格式例如Json( 转换成大家都认识的对象 ),从对象到 Json 字符串的转换过程就是序列化的过程,反过来, 从 Json 字符串转换成 Java 对象的过程就是反序列化的过程。JPA的主要目的是简化现有的持久化开发工作并且整合ORM框架,JPA本身并不是ORM框架,它是一种规范,这种规范可以私下通过注解或者XML描述“对象-关系表”之间的映射关系,并将实体对象持久化到数据库中,从而极大地简化现有的持久化开发工作。 阅读详情

用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册
可以隐式地向 Spring容器注册4个BeanPostProcessor。
不过下面这句话表示,让spring自动去扫描以com开头的包的组件(action/service),然后自动完成组装。
该配置项其实也包含了自动注入上述processor的功能,因此当使用后,即可将省去。

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

表明com.hrrm包及其子包中,如果某个类的头上带有特定的注解【@Component/@Repository/@Service/@Controller】,就会将这个对象作为Bean注册进Spring容器。
在base-package中指明多个包:

<context:component-scan base-package="com.hrrm.dao,com.hrrm.action,com.hrrm.daoimpl" />

多个包的时候记得用逗号隔开。
1、@Component

@Component
是所有受Spring 管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用。

2、@Controller

@Controller对应表现层的Bean,也就是Action,例如:

1 @Controller
2 @Scope("prototype")
3 public class UserAction extends BaseAction<User>{
4 ……
5 }

使用@Controller注解标识UserAction之后,就表示要把UserAction交给Spring容器管理,在Spring容器中会存在一个名字为”userAction”的action,这个名字是根据UserAction类名来取的。注意:如果@Controller不指定其value【@Controller】,则默认的bean名字为这个类的类名首字母小写,如果指定value【@Controller(value=”UserAction”)】或者【@Controller(“UserAction”)】,则使用value作为bean的名字。

这里的UserAction还使用了@Scope注解,@Scope(“prototype”)表示将Action的范围声明为原型,可以利用容器的scope=”prototype”来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。spring 默认scope 是单例模式(scope=”singleton”),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全,struts2 是要求每次次访问都对应不同的Action,scope=”prototype” 可以保证当有请求的时候都创建一个Action对象

3、@ Service

@Service对应的是业务层Bean,例如:

1 @Service("userService")
2 public class UserServiceImpl implements UserService {
3 ………
4 }

@Service(“userService”)注解是告诉Spring,当Spring要创建UserServiceImpl的的实例时,bean的名字必须叫做”userService”,这样当Action需要使用UserServiceImpl的的实例时,就可以由Spring创建好的”userService”,然后注入给Action:在Action只需要声明一个名字叫“userService”的变量来接收由Spring注入的”userService”即可,具体代码如下:

1 // 注入userService
2 @Resource(name = "userService")
3 private UserService userService;

注意:在Action声明的“userService”变量的类型必须是“UserServiceImpl”或者是其父类“UserService”,否则由于类型不一致而无法注入,由于Action中的声明的“userService”变量使用了@Resource注解去标注,并且指明了其name = “userService”,这就等于告诉Spring,说我Action要实例化一个“userService”,你Spring快点帮我实例化好,然后给我,当Spring看到userService变量上的@Resource的注解时,根据其指明的name属性可以知道,Action中需要用到一个UserServiceImpl的实例,此时Spring就会把自己创建好的名字叫做”userService”的UserServiceImpl的实例注入给Action中的“userService”变量,帮助Action完成userService的实例化,这样在Action中就不用通过“UserService userService = new UserServiceImpl();”这种最原始的方式去实例化userService了。如果没有Spring,那么当Action需要使用UserServiceImpl时,必须通过“UserService userService = new UserServiceImpl();”主动去创建实例对象,但使用了Spring之后,Action要使用UserServiceImpl时,就不用主动去创建UserServiceImpl的实例了,创建UserServiceImpl实例已经交给Spring来做了,Spring把创建好的UserServiceImpl实例给Action,Action拿到就可以直接用了。Action由原来的主动创建UserServiceImpl实例后就可以马上使用,变成了被动等待由Spring创建好UserServiceImpl实例之后再注入给Action,Action才能够使用。这说明Action对“UserServiceImpl”类的“控制权”已经被“反转”了,原来主动权在自己手上,自己要使用“UserServiceImpl”类的实例,自己主动去new一个出来马上就可以使用了,但现在自己不能主动去new“UserServiceImpl”类的实例,new“UserServiceImpl”类的实例的权力已经被Spring拿走了,只有Spring才能够new“UserServiceImpl”类的实例,而Action只能等Spring创建好“UserServiceImpl”类的实例后,再“恳求”Spring把创建好的“UserServiceImpl”类的实例给他,这样他才能够使用“UserServiceImpl”,这就是Spring核心思想“控制反转”,也叫“依赖注入”,“依赖注入”也很好理解,Action需要使用UserServiceImpl干活,那么就是对UserServiceImpl产生了依赖,Spring把Acion需要依赖的UserServiceImpl注入(也就是“给”)给Action,这就是所谓的“依赖注入”。对Action而言,Action依赖什么东西,就请求Spring注入给他,对Spring而言,Action需要什么,Spring就主动注入给他。

4、@ Repository

@Repository对应数据访问层Bean ,例如:

1 @Repository(value="userDao")
2 public class UserDaoImpl extends BaseDaoImpl<User> {
3 ………
4 }

@Repository(value=”userDao”)注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。

当Service需要使用Spring创建的名字叫“userDao”的UserDaoImpl实例时,就可以使用@Resource(name = “userDao”)注解告诉Spring,Spring把创建好的userDao注入给Service即可。

1 // 注入userDao,从数据库中根据用户Id取出指定用户时需要用到
2 @Resource(name = "userDao")
3 private BaseDao<User> userDao;

还有一个总结:

Spring中什么时候用@Resource,什么时候用@service?

当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service(“XXX”),就相当于讲这个类定义为一个bean,bean名称为XXX;

当需要在某个类中定义一个属性,并且该属性是一个已存在的bean,要为该属性赋值或注入时在该属性上一行使用@Resource(name=”xxx”),相当于为该属性注入一个名称为xxx的bean。

springboot:jpa:@repository的使用技巧(CRUD以及模糊查询等) Controller: package com.tzb.springboot.controller; import com.tzb.springboot.entity.UserEntity; import com.tzb.springboot.repository.UserRepository; import org.springframework.beans.factory.annotat... 阅读详情

相关推荐

spring ioc aop 和spring springboot常用注解

IoC(Inversion of Control,控制反转)是一种设计思想对象的创建、依赖注入、生命周期管理,不再由程序员手动控制,而是交给 Spring 容器来完成。在 Spring 中,IoC 容器就是负责这些工作的核心模块。以前你 new 对象,现在 Spring 帮你 new 并管理。├── 启动:@SpringBootApplication├── 配置:@Configuration / @Bean├── 参数:@PathVariable / @RequestBody。

a378113472的博客 379

Spring常用注解

转自:http://www.cnblogs.com/xdp-gacl/p/3495887.html使用注解来构造IoC容器用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册。如:在base-package指明一个包<context:component-scan base-package="cn.gacl.java"/>表明cn.gacl.java包及其子

Tomorrow never comes 639

Spring 中 @Component, @Repository, @Service的区别

Component 是一个泛化的概念,表示任何被Spring管理的组件。@Component 不会对被注解的类有任何特殊的处理,因此它是一个通用的注解。@Repository 注解通常用于标识数据访问层(DAO)的类,表示这个类是一个仓库(Repository)类,负责数据库相关的操作。@Service 注解通常用于标识服务层(Service)的类,表示这个类是一个服务类,负责业务逻辑的处理。@Repository 注解的作用与 @Component 注解类似,但它是专门用来标识数据访问对象的。

h a 6 6 6 c k 为 你解决复杂难题! 577

SpringBoot注解 -@Repository

1. @Repository和@Service,@Compent,@Controller这几种注解没有本质区别,都是声明作用,取不同的名字只是容易区分。2. @Repository注解一般用于持久层,也就是Mapper或者Dao层。3. 在用的时候需要在启动类上方搭配@MapperScan一起用,不然会报错。

wutrg1502的博客 1780

基于STM32智能震动报警器震动检测声光报警系统设计

*单片机设计介绍,基于STM32智能震动报警器震动检测声光报警系统设计。

2201_75940997的博客 2150

GBASE南大通用GBase 8s数据库-从零开始的手动安装与实例配置指南

本文详细介绍了GBASE南大通用GBase 8s数据库的手动安装与实例配置全过程,包括环境准备、用户创建、安装包准备、实例创建、环境变量配置等关键步骤。通过实战经验分享和常见问题解决方案,帮助用户快速掌握GBase 8s数据库的安装与配置技巧,确保数据库稳定运行。

weixin_29209825的博客 455

Spring常用注解,注解 IOC ,AOP,MVC 的理解

文章目录0、Spring常用注解1、IOC1.1、IOC简介1.2、 IOC的主要实现方式依赖查找依赖注入1.2.1、 IoC容器1.2.2 、依赖注入@Autowired与@Resource区别2、 AOP2.1、AOP简单理解2.2、 AOP涉及名词 0、Spring常用注解 Spring常用注解 在具体介绍IOC和AOP之前,我们先简要说明下Spring常用注解 1、@Controller:用于标注控制器层组件 2、@Service:用于标注业务层组件 3、@Component : 用于标注这是一

ljm_99的博客 1万+

晟矽微MC32F7361定时器的使用案例说明

110所以TIMER0所用的频率是FCPU的1/64,也就是8/64MHZ. 为1/8MHZ。//io口下拉电阻 1:enable 0:disablea。//io口上拉电阻 1:enable 0:disable。//io口下拉电阻 1:enable 0:disable。//io口上拉电阻 1:enable 0:disable。//io口下拉电阻 1:enable 0:disable。//io口上拉电阻 1:enable 0:disable。

liyanfei123456的博客 1131

Spring常用IoC注解

目录 一、用于创建对象 @Component @Service @Controller @Repository 二、用于注入数据 @Autowired @Qualifier @Resource @Value 三、用于改变作用范围 @Scope 四、和生命周期相关的 @PostConstruct @PreDestory 文章内容基于B站视频教程,这里做下总结,方便复习查看。常用IoC注解根据用处分为一下四类: 一、用于创建对象 作用同XML配置文件中的<bean&g.

我开始懂了的博客 545

K-L展开 (Karhunen-Loeve expansion)

K-L变换

susan_wang1的博客 2万+

通过python+openCV实现对图片中箭头方向的判断

摘要: 针对YOLOv8算法在箭头方向识别效果不佳的问题,提出了一种基于OpenCV的解决方案。该方法通过图像预处理、轮廓分析、几何特征提取(凸包、质心、外接矩形)和方向向量计算,准确判断箭头的上下左右方向。代码示例展示了从图像读取到方向识别的完整流程,并提供了优化建议(如调整二值化阈值、处理多轮廓)。该方案在Windows11+Python3.12+OpenCV环境下验证有效,适用于需要简单几何特征分析的箭头方向检测场景。

AnChenliang_1002的博客 703

Spring 从入门到精通系列 06 —— Spring 中的 IOC 常用注解

  Spring 的 IOC 常用注解主要有用于创建对象的、用于注入数据的、用于改变作用范围的以及和生命周期相关的四部分,本文针对此块内容,进行深入分析与解读。 文章目录Spring 中的 IOC 常用注解一、用于创建对象的1.1 Component1.2 Controller(一般用在表现层)1.3 Service(一般用在业务层)1.4 Repository(一般用于持久层)二、用于注入数据的2.1 Autowired2.2 Qualifier2.3 Resource2.4 Value:三、用于改变

秀岩的博客 1327

【重识云原生】第四章云网络4.7.5节vDPA方案——virtio的半硬件虚拟化实现

vDPA(vhost Data Path Acceleration)即是让virtio数据平面不需主机干预的解决方案。该框架由Redhat提出,实现了virtio数据平面的硬件卸载。控制平面仍然采用原来的控制平面协议,当控制信息被传递到硬件中,硬件完成数据平面的配置之后,数据通信过程由硬件设备(智能网卡)完成,虚拟机与网卡之间直通。中断信息也由网卡直接发送至虚拟机不需要主机的干预。......

junbaozi的专栏 2189

Spring IOC(控制反转)中常用注解

Bean注解作用使用位置是否必须@Component注册 Bean类✅@Service业务层 Bean类✅(语义化)数据层 Bean类✅(异常翻译)控制层 Bean类✅(MVC)@Autowired自动注入字段/方法/构造器✅@Qualifier指定 Bean 名字段/参数配合@Autowired@Value注入值字段✅配置类类✅@Bean定义 Bean方法✅扫描包配置类✅@Scope设置作用域类/方法可选初始化方法可选销毁前方法可选。

2301_79783285的博客 1219

uniapp [全端兼容] - 实现接入集成高德地图搜索地址及选择位置功能,搜索框检索选择地点并返回经纬度及详细省市区县街道地址,用户搜索历史及清空历史记录,选择地址自动获取周边位置列表/地图移动选点

uni-app,高德地图,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,Uniapp高德地图,在地图上选择或搜索指定地点,打开地图选择位置,关联地址搜索,输入地址返回附近地址列表,uniApp高德地图地址搜索,搜索框历史记录,关键字搜索,周边查询,搜索位置,uniapp对接高德实现搜索出现地址以及保存搜索记录,集成高德地图,实现精准位置选点功能,获取当前定位城市,如何实现搜索功能,获取省份城市区街道详细地址经纬度,移动选点标记位置,在地图上进行选择位置选点、搜索

🏆 前端领域优质创作者 1万+

YOLOv9改进策略 | Conv篇 | 2024最新ECCV最新大感受野的小波卷积WTConv助力YOLOv9有效涨点

本文给大家带来的改进机制是一种新的卷积层,称为WTConv(小波卷积层),它利用小波变换(WT)来解决卷积神经网络(CNN)在实现大感受野时遇到的过度参数化问题。WTConv的主要目的是通过对输入数据的不同频率带进行处理,使CNN能够更有效地捕捉局部和全局特征,WTConv成功解决了CNN在感受野扩展中的参数膨胀问题,提供了一种更为高效、鲁棒且易于集成的卷积层解决方案,我将其用于二次创新YOLOv9中的RepNCSPELAN4机制可以减少一定的参数量和计算量,达到一个可观的轻量化作用。

Snu77的博客 1544

Spring简单介绍(二)之IOC常用的注解

这篇博文主要使用了一个列子,介绍了基于配置文件的IOC配置和基于注解的IOC配置。 要求:实现账户的CRUD 环境搭建: 数据库、依赖省略。。。。。。 //实体类 public class Account { private Integer id; private String name; private Float money; public Integer ge...

兵马未动,粮草先行。。。的博客 304

假人有限元模型

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

Spring IoC常用注解

Spring IoC容器 Spring IoC(Inversion of Control,控制反转)是Spring Framework的最核心的部分。 所谓控制反转,是指通过使用IoC容器对象依赖关系的管理被反转了,也就是说,对象之间的依赖关系由IoC容器进行管理,并且由Ioc容器通过依赖注入(DI,Dependency Injection)的方式来完成对象的注入。   在

raiet 2022

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IDEA的使用指南

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

Spring IOC 容器组件注册常用注解

Bean用于定义一个Bean,它可以用在方法上,表示该方法返回的对象将会被注册为一个Bean。@Bean默认情况下会使用方法名作为Bean的名称,也可以通过name、value属性指定Bean的名称。输出结果:当@Bean用name或value属性指定名字时,注册到容器的中bean名称就为指定的名称@Component是用在类上的注解,用于将一个类注册为一个Bean。在使用@Component时,可以通过value或者name属性指定Bean的名称。

weixin_68901096的博客 887

efm32 入门.pdf

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

Spring IoC简单介绍以及Spring中常用注解的简单介绍

一、Spring入门案例 Spring概念: Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。 Spring优点: 低侵入式设计,代码的污染极低。 独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺。 Spring的IoC容器降低了业务对象替

weixin_49147125的博客 249

Spring IOC常用注解

SpringIOC常用注解IOC常用注解1. 用于注解驱动的注解1.1 @Configuration1.1.1 作用1.1.2 使用场景1.1.3 属性分析1.1.4 示例1.1.5 测试1.2 @ComponentScan1.2.1 作用1.2.2 使用场景1.2.3 属性分析1.2.4 示例1.3 @Bean1.3.1 作用1.3.2 使用场景1.3.3 属性分析1.3.4 示例1.4 @Import1.4.1 作用1.4.2 使用场景1.4.3 属性分析1.4.4 示例1.5 @ProperySour

qq_29942585的博客 2906

Spring的IOC常用注解(含源码)

查看BeanValidationPostProcessor实现了BeanPostProcessor接口,其中不管是postProcessBeforeInitialization还是postProcessAfterInitialization,均调用了。//如果当前bean为ApplicationContextAware的子类,则会调用其setApplicationContext将applicationContext进行赋值。构造(对象创建)单实例:在容器启动的时候创建对象多实例:在每次获取的时候创建对象。

2501_90433086的博客 607

Spring常用IOC注解说明

1.用于对象的注解-IOC相关注解 1.1组件注解 我们将用于被扫描创建对象的注解,统称为组件注解。 组件包括: @Component:用于声明三层以外的组件注解 @Controller:用于声明表示层的组件注解 @Service:用于声明服务层的组件注解 @Repository:用于声明持久层的组件注解 **组件注解的功能都是标识类为注解的组件类,启动Spring框架的程序时,声明将这些组件类注入到Spring容器里面。**意味着,只要是加了这四个注解任何一个注解的类,在程序启动的时候,Spring就通过

Apple_Andy的博客 188

常用spring IOC注解

关于spring IOC容器的使用。IOC容器有两种注入方式,一种是通过配置文件注入,另一种则是通过注解注入。本篇主要展示常用的注解使用方法 @Component 作用:将当前类对象存入spring容器 属性:value 用于指定bean的id,若不写,则默认值为当前类名且首字母小写 @Component //@Component(value="user") public class User(){ } @Controller @Service @Repository 以上三个注解的作用及属性和Com

qq_43574493的博客 185

IOC、DI、AOP与Spring Boot常用注解

Spring相关IOC、DI、AOPSpring Boot常用注解Spring Boot启动原理 IOC、DI、AOP IOC(inversion of control:控制反转) 在Spring的工作方式中,所有的类都会在spring容器中登记,告诉spring这是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你想要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个

weixin_41109763的博客 359
上一篇: Spring3中定时器的配置使用之Quartz
下一篇: table中的td限制宽度width也不能让字符过长变成省略号生效?
Java_Mr_Zheng
博客等级 码龄11年 18粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值