【Spring】容器

注意点: p命名和c命名空间不能直接使用,需要导入xml约束!

xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
使用注解实现自动装配

jdk1.5 支持的注解,spring2.5 就支持注解了!

The introduction of annotation-based configuration raised the question of whether this approach is “better” than XML.

要使用注解须知:

1.导入约束:context约束

2.配置注解的支持:context:annotation-config/

@Autowired

直接在属性上使用即可!

使用Autowired我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC(spring) 容器中存在,符合我们的名字byName。

如果@Autowired自动装配的韩静比较复杂,自动装配无法通过一个注解完成的时候,我们使用@Qualifier(value=“xxx”)去装配@Autowired的使用,指定一个唯一的。

@Component:组件,放在类上,说明这个类被Spring管理了,就是Bean!

小结:

@Resource和Autowired的区别

1.都是用来自动装配的,都可以防砸属性字段上

2.@Autowired 通过byname的方式实现,而且必须要求这个对象存在

3.@Resourece 默认通过byname的方式实现,如果找不到哦啊名字,则通过byType实现,如果两个都找不到的情况下,就报错

4.一个是java注解,一个是spring注解

5.执行顺序不同:@Autowired 通过byname的方式实现

使用srping注解开发

1.在使用spring4之后,要使用注解开发,必须要保证导入aop的包导入

使用注解需要导入context约束,增加注解的支持!

2.属性如何注入

3.衍生的注解

@Component有几个衍生注解,我们在web开发中,会按照mvc三层架构分层!

1)dao {@Repository}

2)service{@service}

3)controller{@Controller}

这四个注解功能都是一样的,都是代表将某个类注册到Spring中,装配Bean

4.自动装配

@Autowired:自动装配通过类型、名字
@Nullable: 字段标记这个注解,说明这个字段可以为null
@Resource:自动装配通过名字、类型

5.作用域

@Scope(“singleton”)

6.小结

xml与注解:

1.xml更加万能,适用于任何场合

2.注解,不是每个类使用不了,维护相对复杂

xml与注解最佳实践:

xml用来管理bean;

注解只负责完成属性的注入;

    <!--固定要扫描的包,这个注解包下的注解就回生效--><context:component-scan base-package="com.gwl"> </context:component-scan><context:annotation-config/>

Spring的优点

1.Spring是一个开源的免费的框架(容器)!

2.Spring是一个轻量级的,非入侵式的框架!

3.控制反转(IOC),面向切面编程(AOP)!

4.支持事务的处理,对框架整合的支持!

总结一句话:Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!

使用Java的方式配置Spring

我们现在完全不适用Spring的xml配置了,全全交给Java来做

JavaConfig 是Spring的一个子项目,在Spring4之后,它成为了一个核心功能!

10、代理模式

​ 为什么要学习代理模式?因为这就是SpringAOP的底层!【SpringAOP和SpringMVC】

代理模式的分类:

1.静态代理 2.动态代理

10.1 静态代理

角色分析:

1.抽象角色:一般会使用接口或者抽象类来解决

2.真实角色:被代理的角色

3.代理角色:代理真实角色,代理站务室角色后,我们一般会做一些负数操作

4.客户:访问代理对象的人!

代码步骤:

1.接口

2.真实角色

3.代理角色

4.客户端访问代理角色

代理模式的好处:

1.可以使真实角色的操作更加纯粹!不用去关注一些公共业务

2.公共也就是交给代理角色!驶向了业务的分工!

3.公共业务发生扩展的时候,方便集中管理!

缺点:

1.一个真实角色就会产生一个代理角色;代码量会翻倍-开发效率会变低。

10.2动态代理

动态代理和静态代理角色一样

动态代理的代理类是动态生成的,不是我们直接写好的!

动态代理分为两大类:基于接口的动态代理,基于类的动态代理

基于接口-------JDK动态代理【我们在这里使用】

基于类:Cglib

Java字节实现:javasist

需要了解连个类:Proxy 代理,InvocationHandler 调用处理程序

10.3 AOP实现方式一

横切关注点:跨越应用程序多个木块的方法或功能,即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点,如日志,安全,缓存,事务等等…

切面(ASPECT):横切关注点 被木块华的特殊对象,即,它是一个类。

通知(Advice):切面必须要完成的工作,即,它是类中的一个方法。

目标(Target):被通知对象。

代理(Proxy):向目标对象应用通知之后创建的对象。

切入点(PointCut):切面通知执行的“地点”的定义。

连接点(JointPoint):与切入点匹配的执行点。

10.4 aop实现方式二

10.5 aop实现方式三(注解实现)

11、声明事务

事务ACID原则:

原子性 一致性 隔离性 (多个业务可能操作同一个资源,防止数据损坏)

持久性(事务一点提交,无论系统发生什么问题,结果都不会再被影响,被持久化地写到存储器中)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java进击框架:Spring-Web(八)

Java进击框架&#xff1a;Spring-Web&#xff08;八&#xff09; 前言DispatcherServlet拦截器异常视图解析重定向转发 语言环境日志 过滤器带注释的控制器声明映射请求其它注解验证 功能性端点URI Links异步请求CORSHTTP缓存视图技术MVC配置其他Web框架 前言 Spring Web MVC是…

519基于单片机的自动切割流程控制系统

基于单片机的自动切割流程控制系统[proteus仿真] 自动切割流程控制系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于单片机的自动切割流程控制系统 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&…

【蓝桥备赛】技能升级——二分查找

题目链接 技能升级 个人思路 需要给n个技能添加技能点&#xff0c;无论技能点加成如何衰减&#xff0c;每次始终都是选择当前技能加点加成最高的那一项技能&#xff0c;所以最后一次的加点一定也是加在当时技能攻击加成最高的那个。此时&#xff0c;我们去寻找最后一次的加点…

无人驾驶卡尔曼滤波

无人驾驶卡尔曼滤波&#xff08;行人检测&#xff09; x k a x k − 1 w k x_k ax_{k-1} w_k xk​axk−1​wk​ w k w_k wk​&#xff1a;过程噪声 状态估计 估计飞行器状态&#xff08;高度&#xff09; x k z k − v k x_k z_k - v_k xk​zk​−vk​ 卡尔曼滤波通…

JavaScript中表格文件导出功能详解

一、背景 在现代web开发中&#xff0c;提供数据导出功能已成为许多应用程序的必备功能。用户可能希望将数据保存为文件以便于离线查看或分享。在众多的数据展示形式中&#xff0c;表格因其直观性而广受欢迎。本文将专注于如何使用JavaScript将HTML表格导出为文件。 二、实现原…

了解什么是UV纹理?

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 什么是UV&#xff1f; UV 是与几何图形的顶点信息相对应的二维纹理坐…

vue element plus Layout 布局

通过基础的 24 分栏&#xff0c;迅速简便地创建布局。 TIP 组件默认使用 Flex 布局&#xff0c;不需要手动设置 type"flex"。 请注意父容器避免使用 inline 相关样式&#xff0c;会导致组件宽度不能撑满。 基础布局# 使用列创建基础网格布局。 通过 row 和 col …

CentOS找回root密码

很悲伤&#xff0c;你忘记了root密码。。。 那就来重置它吧~ 1、在启动时选择操作系统&#xff1a;在引导过程中&#xff0c;选择CentOS操作系统并按下键盘上的任意键来停止引导。 2、 进入编辑模式&#xff1a;在启动菜单中&#xff0c;找到并选择要编辑的CentOS条目&…

63、图片预处理:Resize and Crop

在进行图像处理之前,很多时候需要对图片先进行预处理,而最常见的预处理方法是 Resize and Crop。 在 resnet50 的实战中,在进行一张图片的推理实验之前,我们也会对输入的图像进行 Resize and Crop 操作。 这一节就介绍下这两个预处理操作。 实际上,Resize and Crop 是两…

Prometheus实战篇:Prometheus监控mongodb

Prometheus实战篇:Prometheus监控mongodb 准备环境 docker-compose安装mongodb docker-compose.yaml version: 3 services:mongo:image: mongo:4.2.5container_name: mongorestart: alwaysvolumes:- /data/mongo/db: /data/dbport:- 27017:27017command: [--auth]enviromen…

PHP数组复习

定义索引数组 $arr[0] 123; //整数 $arr[1] "hello"; //字符串 $arr[2] 45.6; //浮点数 $arr[3] true; //布尔值 $arr[4] null; //null 赋值方式定义关联数组 $arr["id"] 1; $arr["name"] "某某"; $a…

VMware复制粘贴共享文件夹

win和虚拟机之间&#xff0c;无法复制粘贴&#xff0c;共享文件夹的解决方案。 安装VMware tools 1&#xff0c;先检查虚拟机设置部分。共享文件夹已启用。复制粘贴已启用。 2&#xff0c;安装tools.选择重新安装VMware tools. (此图片为安装过的截图) 成功后会显示如图。…

【2024最新-python3小白零基础入门】No1.python简介以及环境搭建

文章目录 一 python3 简介二 python语言的特点三 python安装四 安装开发工具-pycharm五 新建一个python项目1.新建项目2 配置虚拟环境3 运行项目 一 python3 简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性&a…

批量置入视频封面:一分钟教程,简单易学

在视频制作过程中&#xff0c;为视频添加引人注目的封面是吸引观众的关键。而当我们需要批量处理多个视频时&#xff0c;如何快速、准确地置入封面就显得尤为重要。本文将为您揭示这一高效技巧&#xff0c;让您在一分钟内学会批量置入视频封面&#xff0c;提升视频的吸引力与观…

vite 如何设置 pwa,让网页类似 app 那样运行,使用插件 vite-plugin-pwa

vite 如何设置 pwa&#xff0c;让网页类似 app 那样运行&#xff0c;使用插件 vite-plugin-pwa 一、概述 情况还是那么个情况&#xff0c;还是原来的项目 vue2 改为 vitetsvue3 遇到的问题&#xff0c;今天这个问题是如何 在 Vite 环境下设置 PWA。 PWA 就是网页应用可以像 a…

java是值传递还是引用传递

1.前言 java是值传递&#xff1b;值传递是指在调用方法时将实际参数拷贝一份传递到方法中&#xff0c;这样在方法中如果对参数进行修改&#xff0c;将不会影响到实际参数&#xff1b;当传的是基本类型时&#xff0c;传的是值的拷贝&#xff0c;对拷贝变量的修改不影响原变量&a…

2023职业规划与心灵成长-7年JAVA开发的自我思考

博主是一个知足长乐&#xff0c;安于现状&#xff0c;热爱编程&#xff0c;家庭大于一切 的技术小达人。 19年从一家中型软件公司研发岗跳到了一家小国有企业的IT部&#xff1b;已经4年了&#xff0c;记录下当下历程吧&#xff0c;留给以后得自己看也给目前各位想跳的朋友参考下…

krpano官网文档翻译-------krpano Action脚本参考文档【krpano Actions / Scripting Reference】

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 摘要:本文通过大量代码案例,手把手教你如何使用krpano的Action脚本实现各种交互控制和酷炫…

OpenAI ChatGPT-4开发笔记2024-01:开发环境

ChatGPT发展一日千里。工具、函数少则数日&#xff0c;多则数月就加入了Deprecated行列不再如预期般工作。元旦闲来无事&#xff0c;用最新的ChatGPT重写一下各种开发场景&#xff0c;全部实测通过。 开发环境&#xff1a; 电脑&#xff1a;两台笔记本&#xff1a;HP和MacBoo…

代码随想录day24 开启回溯算法

个人见解 感觉回溯算法其实和递归很像&#xff0c;也是用递归的做法&#xff0c;也有三部曲&#xff0c;但又不太一样的地方是递归中类似二叉树&#xff0c;只有纵向遍历&#xff08;一层层往下遍历&#xff0c;没有横向遍历&#xff09;&#xff0c;而回溯算法中多的for循环就…