day06 Spring AOP

2023-11-12

DI注解

**作用:**解决使用xml配置繁琐的问题

该注解和使用配置文件一样分成两类进行注入:字段注入或属性注入,注入bean(取代xml中的ref)

1.@value注解

使用value注解给属性进行赋值,只能使用于八大基本类型和常量类型/String/Integer…

@value("小小")
private String name;

2.@Autowried,常用

给对象进行赋值或者取对象的值

@Autowired
private StudentServiceImpl studentService;

或者

@Autowired
    public void setStudentService(StudentServiceImpl studentService) {
        this.studentService = studentService;
    }

Auto注解适用于自定义类型或者第三方的类型(application),可以贴在属性上面或者setter方法上面,只使用一种方法就可以

Autowried注意细节:

使用该注解与aop进行连用的时候,贴的类型应该使用接口的类型,否则会和aop创建的代理类发生冲突,若想强制使用就在spring.xml中添加CGLIB

 <aop:aspectj-autoproxy proxy-target-class="true"/>

1.可以自动将属性或者字段需要的对象找出来,并注入到属性或者字段上

2.可以贴在属性或者setter方法上面

3.可以注入spring的内置对象,不仅限于自己

4.可以设置@Autowired(required=false)解决对象找不到的错误

5.Autowrited找对象的方式

​ 先找这个的对象的类型,如果找到了这个类型,就注入

​ 若找到多个相同的类型,再根据名字去找,若根据名字没有找到就报错

​ 可以通过设置qualifier(“id”)+@Autowired()通过类型和id进行寻找

3.@resourse

作用和Autowried差不多

需要添加依赖

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
@Resource
private StudentServiceImpl studentService;

和Autowried的作用一样,但是有以下差别

1.他是javax内置的注解

2.注解的这个必须要找到这个对象,否则报错

3.找对象的方式

​ 先通过名字去找,找到就注入

​ 有个多个名字,就通过类型进行寻找,若有多个类型就要报错

​ 使用Resource(name=“id”)指定名字去寻找

IOC注解(贴在实现类上面)

**作用:**解决使用xml繁琐配置的方式创建对象

前提:使用IOC注解需要给spring,xml配置解析器

<!--配置ioc的解析器,可以添加多个-->
    <context:component-scan base-package="解析的包1,解析的包2"/>

四种注解,本质上的作用就是一样的,可以写value值

**@Repository:**贴在持久成上面,DAO实现类

@Service:贴在业务层的实现类上面

**@Controller:**贴在控制层上面(springMVC)

**@Component:**若以上不满足就使用这个,一般使用与工具类

例子:

@Repository
public class StudentDAOimpl implements IStudentDAO {....}
bean中初始化和销毁属性的注解

**@Sope:**设置bean的作用域,贴在类上面

**@PostConstruct:**初始化操作,贴在方法上面

**@PreDestroy:**销毁操作,贴在方法上面

代理模式

控制事务

以前存在的问题:

​ 1.代码结构重复,维护成本大

​ 2.责任不分离,业务层面关系到了事务管理,日志管理等等

代理模式的作用

在客户端和真实对象之间起到中介的作用,使各个模块实现责任分离

代理模式的分类

**静态代理:**在程序运行的前,由我们自己创建代理类

**动态代理:**在程序运行的时候由JVM反射生成,类与对象不由我们进行创建

静态代理的实现

​ 在service层的代理类实现类都是实现同一个service接口,使用代理类实现处理事务的功能,使用实现类进行数据插入的操作

​ 实现同一个接口的作用:方便管理,有约束的功能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day06 Spring AOP 的相关文章

  • 在 Java 中从 SOAPMessage 获取原始 XML

    我已经在 J AX WS 中设置了 SOAP WebServiceProvider 但我无法弄清楚如何从 SOAPMessage 或任何 Node 对象获取原始 XML 下面是我现在获得的代码示例 以及我试图获取 XML 的位置 WebSe
  • 项目缺少所需的注释处理库

    我的 Eclipse IDE 突然在问题视图中显示 xxxx 项目缺少所需的注释处理库 xxxx M2 REPO 中的一些旧 jar 我用谷歌搜索 没有找到任何答案 为什么我的项目使用旧的 jar 以及错误来自哪里 To remove th
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 如何为小程序提供对文件系统写入的访问权限

    我在设置小程序的策略文件时遇到问题 我是第一次这样做 不知道如何在java中设置小程序的策略文件 实际上我想授予小程序在文件系统上写入的权限 为此我必须向小程序授予文件权限 所以我创建了一个名为 java policy 的文件 并将以下代码
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • 正则表达式在 Velocity 模板中不起作用

    我在 Test java 中尝试过这个 String regex lt s br s s gt String test1 lt br gt System out println test replaceAll regex 但是当我在速度模板
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • 在spring data jpa中实现动态数据源

    我有 N 个服务器 N 个数据库和 N 个配置 看下面的场景 因此 对于每个请求 我都需要根据配置访问服务器和数据库 spring data jpa如何实现动态数据源 你可以试试抽象路由数据源 https docs spring io sp
  • 使用 Spring 注入 Log4J 记录器

    我有一个带有以下 web xml 的 spring 2 5 webapp
  • 合并两个地图的最佳实践是什么

    如何将新地图添加到现有地图 地图具有相同的类型Map
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 配置jmxremote时无法正常停止tomcat

    我添加了一个jmxremotecatalina bat中的配置 set JAVA OPTS Dcom sun management jmxremote port 9004 Dcom sun management jmxremote ssl
  • Jetty Plugin 9启动不喜欢icu4j-2.6.1.jar

    我对 mortbay 的 Maven jetty 插件 6 有相同的配置
  • java swing:向 JTree 项目添加自定义图形按钮

    我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮 这可以做到吗 如果是这样 怎么办 thanks Clamp 你在这方面成功了吗 我想做同样的事情 但很难让 JButton 响应用户 设置渲染器以显示按钮的过程很顺利 但所有鼠标
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • JPA 将 BigDecimal 作为整数保存在数据库中

    我在数据库中有这个字段 ITEMCOST NUMERIC 13 DEFAULT 0 NOT NULL 在JAVA中 Entity中的字段定义如下 Column name ITEMCOST private BigDecimal itemCos
  • Java 中的微分方程

    我正在尝试用java创建一个简单的SIR流行病模型模拟程序 基本上 SIR 由三个微分方程组定义 S t l t S t I t l t S t g t I t R t g t I t S 易感人群 I 感染人群 R 康复人群 l t c
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private

随机推荐

  • feign get方法参数是form提交方式

    使用feign调用服务端接口时如果服务端接口是get方式 并且采用form方式表达提交的时候需要使用 SpringQueryMap 注解 但是参数列表中只能使用一个 SpringQueryMap注解 多个只会有一个生效 服务端 被调用方 c
  • 全球及中国动脉导管未闭治疗设备行业渠道模式分析与需求前景预测报告2022版

    全球及中国动脉导管未闭治疗设备行业渠道模式分析与需求前景预测报告2022版 修订日期 2021年12月 搜索鸿晟信合研究院查看官网更多内容 2021年 全球动脉导管未闭治疗设备市场规模达到了 百万美元 预计2027年可以达到 百万美元 年复
  • 理事的三板斧-以项目部为例

    作为管理者来说 无非是理事 管人 这中间理事尤为重要 因为事理的不清楚 人肯定难管好 即使有个人魅力 队伍凝聚力强 事理的不对 也会事倍功半 长期的去看 团队也会出问题的 事理的清楚 我认为主要有三点 目标 流程 模板 目标清楚了 方向就不
  • 跨度计算算法

    int FindingSpans int inputArray int spans new int inputArray length for int i 0 i lt inputArray length i int span 1 int
  • 关于matplotlib及相关cmap参数的取值

    关于matplotlib及相关cmap参数的取值 在matplotlib中对于图片的显示有如下方法 这不是重点 其中有cmap binary 的参数 plt imshow imgs i reshape 28 28 cmap binary 或
  • Linux系统之安装java开发环境

    Linux系统之安装java开发环境 一 java介绍 1 java简介 2 java的三大平台 3 java的主要特性 二 检查本地系统环境 1 检查系统版本 2 检查系统内核版本 三 清空java环境 1 删除java目录 2 移除所有
  • 不高兴的津津1073

    Description 津津上初中了 妈妈认为津津应该更加用功学习 所以津津除了上学之外 还要参加妈妈为她报名的各科复习班 另外每周妈妈还会送她去学习朗诵 舞蹈和钢琴 但是津津如果一天上课超过八个小时就会不高兴 而且上得越久就会越不高兴 假
  • 经典Proxool.properties

    数据库1jdbc 1 proxool alias WEBGISjdbc 1 proxool driver class oracle jdbc driver OracleDriverjdbc 1 proxool driver url jdbc
  • JNLP 文件无法打开的解决办法

    JNLP Java Network Launching Protocol 是 java 提供的一种可以通过浏览器直接执行 java 应用程序的途径 它使你可以直接通过一个网页上的 URL 连接打开一个 java 应用程序 因此 要运行 jn
  • 用户·角色·权限·表

    一 引言 因为做过的一些系统的权限管理的功能虽然在逐步完善 但总有些不尽人意的地方 总想抽个时间来更好的思考一下权限系统的设计 权限系统一直以来是我们应用系统不可缺少的一个部分 若每个应用系统都重新对系统的权限进行设计 以满足不同系统用户的
  • React新特性hooks中memo,usememo,useCallback的区别

    useMemo memo类似于PureCompoent 作用是优化组件性能 防止组件触发重渲染 memo针对 一个组件的渲染是否重复执行
  • 江苏开票系统安全接入服务器地址,江苏省增值税发票查询平台网址.doc

    江苏省增值税发票查询平台网址 江苏省增值税发票查询平台网址 81 增值税发票查询平台于2016年5月27日在全国36个省 市 自治区升级完毕 目前全国统一版本为V2 0 00 新版本上线后 功能更加强大和人性化 为了使广大纳税人能更加正确
  • nginx出现 “414 request-uri too large”

    公司项目有一个模块 在请求查询的时候使用了Get方法 由于拼接的url过长 导致nginx出现了 414 request uri too large 错误 出现这种问题可以按照如下解决 在nginx的nginx conf修改如下参数的 cl
  • git check-pick,git patch 与 git stash 详解

    大家好 我是 17 今天和大家聊一聊 git check pick git patch 与 git stash 的用法 git cherry pick 为什么要用 cherry pick 不适合 merge 的场景就可以考虑 cherry
  • mysql数据库——思维导图

    学完mysql后 自己弄得的思维导图 原图30 6MB 太大了放不上来 这里就放个链接吧 欢迎大家去看 如果有需要改正的地方 请告诉我 谢谢 链接 https www zhixi com view 718f3805 密码 6522 下面是M
  • Android 动态权限判断是否允许的几种方式及测试

    一 说在前面 由于各个系统厂商定制 checkSelfPermission在有些机型上是始终为0的 也就是允许 这个问题非常头疼嘞 于是手持一加对三种方式进行了测试 以read sms权限为例 二 检查方式 常用的检查 ContextCom
  • java 内存分配管理_JAVA实验操作系统内存管理-最优分配,最先分配,最坏分配算法...

    package Memory import java util ArrayList import java util Iterator import java util Scanner public class OS ArrayList f
  • 用这个算法能让大数据集群性能提升100倍!

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 前情概要 二 背景引入 三 问题凸现 四 Hadoop的优化方案 一 前情概要 这篇文章给大家聊聊Hadoop在部署了大规模的集群场景下 大量客户端并发写数
  • K8S安装部署Nacos集群

    1 在k8s中部署的难点 在k8s中部署nacos集群和在裸机器上直接部署nacos机器其实差别不大 最主要的区别是k8s中部署的服务没有固定的ip地址 而nacos集群部署需要配置所有实例的ip 2 解决 在k8s中通过StatefulS
  • day06 Spring AOP

    DI注解 作用 解决使用xml配置繁琐的问题 该注解和使用配置文件一样分成两类进行注入 字段注入或属性注入 注入bean 取代xml中的ref 1 value注解 使用value注解给属性进行赋值 只能使用于八大基本类型和常量类型 Stri