- 博客(135)
- 收藏
- 关注
原创 Spring - 事务 - 事务介绍
事务(Transaction)在数据库管理中指的是一个工作单元,它由一系列的操作组成,这些操作要么全部成功,要么全部失败。事务的概念对于确保数据的完整性和一致性至关重要,尤其是在并发环境和分布式系统中。
2024-07-18 17:44:57
172
原创 Spring - AOP - 底层原理
然而,它的缺点也很明显,如果需要代理的对象很多,那么需要为每一个对象都创建一个代理类,这会导致代码量的增加和维护成本的上升。此外,如果接口中的方法数量增加,那么所有的代理类都需要进行修改,这违反了开闭原则(Open/Closed Principle)。因此,在实际应用中,动态代理往往更受欢迎,因为它可以避免这些问题。举个例子:客户找老板, 让秘书登记来访人员和时间, 记录来访用时,并且让秘书拒绝老板不想见的客户。:这是一个工具类,用于创建代理实例。方法就会被执行,从而实现了在方法调用前后的增强行为。
2024-07-18 15:19:04
800
原创 Spring - AOP - 切点
当多个增强的切点表达式相同时,可以将切点表达式进行抽取。Spring提供了@PointCut注解,该注解的作用是将公共的切入点表达式抽取出来,需要的时候引用改切入点表达式即可。
2024-07-16 16:23:45
839
原创 Spring - AOP - 介绍
Spring 框架的一个关键组件是面向切面的编程(AOP)框架。面向切面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。在软件开发过程中有各种各样的很好的切面的例子,如日志记录、审计、声明式事务、安全性和缓存等。在 OOP 中,关键单元模块度是类,而在 AOP 中单元模块度是切面。依赖注入帮助你对应用程序对象相互解耦合,AOP 可以帮助你从它们所影响的对象中对横切关注点解耦。
2024-07-16 13:15:42
784
原创 Spring - AOP - 术语
在切面的某个特定的连接点上执行的动作。许多 AOP 框架,包括 Spring 在内,都是以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。通知和切点表达式相关联,并在满足这个切点的连接点上运行(例如,当执行某个特定名称的方法时)。顾问是 Advice 的一种包装体现,Advisor 是 Pointcut 以及 Advice 的一个结合,用来管理 Advice 和 Pointcut。在Spring AOP中,一个连接点总是代表一个方法的执行,其实就代表增强的方法。即包含主业务逻辑的类的对象。
2024-07-10 17:58:30
264
原创 Spring - IOC - Bean生命周期
在Spring框架中,Bean的生命周期是指从Bean的实例化开始直到销毁的过程。当Spring容器关闭时,如果Bean定义了。属性,那么对应的初始化方法会被调用。属性,那么对应的销毁方法会被调用。
2024-07-10 16:21:30
1341
原创 Spring - IOC - 注入装配
Resource是JSR250规范的实现,在包下@Resource可以作用TYPE、FIELD、METHOD上@Resource是默认根据属性名称进行自动装配的,如果有多个类型一样的Bean候选者,则可以通过name进行指定进行注入@Inject是JSR330 (Dependency Injection for Java)中的规范,需要导入javax.inject.Inject jar包 ,才能实现注入@Inject可以作用CONSTRUCTOR、METHOD、FIELD上。
2024-07-09 10:09:25
576
原创 Spring - IOC - 实例化Bean
FactoryBean是一个接口,需要有一个Bean,实现FactoryBean接口的Bean就成为了特殊的Bean。如果有参构造函数有多个并且没有无参构造函数,会报错;需要一个无参构造函数。如果只有一个有参构造函数spring会调用,并且把产生自动装配进来。===> 想通过容器去获取对应的类型,就需要。===>当通过Bean名称实际获取到的就是。有多个构造函数依然会调用无参构造函数。可以自由的选择构造函数进行实例化。在Bean名称开头使用。
2024-07-07 11:17:46
684
原创 Spring - IOC - 配置Bean
Bean 可以干预bean的实例化过程,jar包中的类如果要配置bean就需要用@Bean。批量注册bean(通过实现selectlmports,返回bean的完整类路径字符串数组)@Bean方法调用另一个@Bean方法,会从spring容器获取。@lmport(实现lmportSelector.class)@Bean 通常出现在方法上面,也可用于自定义注解上。@Bean中声明的参数spring会帮我们自动注入进来。定义一个实现 ImportSelector 接口。@Bean 通常写在配置类里面(
2024-07-04 17:42:29
750
原创 Maven - 目录结构
目录:Maven - 目录结构1. 各个目录的作用2. 约定目录结构的意义3. 约定大于配置Maven - 目录结构1. 各个目录的作用另外还有一个target目录专门存放构建操作输出的结果。2. 约定目录结构的意义Maven为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。例如:Maven执行编译操作,必须先去Java源程序目录读取Java源代码,然后执行编译,最后把编译结果存放在target目录。3. 约定大于配置Maven对于目录结构这个问题,没有采用配置的方式
2024-07-01 16:11:52
172
原创 Maven - IDEA创建Maven项目
目录:Maven - IDEA创建Maven项目1. 新建项目2. 选择 Maven 项目Maven - IDEA创建Maven项目1. 新建项目2. 选择 Maven 项目Java 项目项目名称项目储存地址Maven构建系统JDK版本组 ID(包名)工件 ID(项目名称)
2024-07-01 15:44:39
382
原创 CentOS 7 安装 MySQL
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包。下载地址为:https://dev.mysql.com/downloads/repo/yum/
2024-07-01 10:48:11
112
原创 Java - 多态
在编译的时候,编译器使用Employee类中的mailCheck()方法验证该语句, 但是在运行的时候,Java虚拟机(JVM)调用的是Salary类中的mailCheck()方法。还可以引用和它类型相同的或者相兼容的对象。Java中所有的方法都能以这种方式表现,借此,重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型。因为e是Employee的引用,所以调用e的mailCheck()方法则有完全不同的结果。当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。
2024-06-27 13:42:59
957
原创 Java - 包(package)
而且在实际开发中这样做是值得提倡的,当你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和注释等是相关的。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个package的声明放在这个源文件的开头。编译之后的.class文件应该和.java源文件一样,它们放置的目录应该跟包的名字对应起来。编译的时候,编译器为包中定义的每个类、接口等类型各创建一个不同的输出文件,输出文件的名字就是这个类型的名字,并加上.class作为扩展后缀。
2024-06-27 13:41:03
904
原创 Java - 接口
正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。以上的程序片段是合法定义的子接口,与类不同的是,接口允许多重继承,而 Sports及 Event 可能定义或是继承相同的方法。Hockey接口自己声明了四个方法,从Sports接口继承了两个方法,这样,实现Hockey接口的类需要实现六个方法。
2024-06-27 13:40:22
704
原创 Java - 封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。要访问该类的代码和数据,必须通过严格的接口控制。
2024-06-27 13:39:41
264
原创 Java - 抽象类
在 Java 面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。尽管我们不能实例化一个Employee类的对象,但是如果我们实例化一个Salary类对象,该对象将从Employee类继承3个成员变量和7个成员方法。继承抽象方法的子类必须重写该方法。如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。
2024-06-27 13:38:59
340
原创 Java - 重写(Override)与重载(Overload)
方法的重写 (Overriding) 和重载 (Overloading) 是 java 多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载 (Overloading)。(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写 (Overriding)。
2024-06-27 13:37:51
884
原创 Java - 继承
如果类 A 是类 B 的父类,而类 B 是类 C 的父类,我们也称类 C 是 A 的子类,类 C 是从类 A 继承而来的。所有 Java 的类均是由 java.lang.Object 类继承而来的,所以 Object 是所有类的祖先类,而除了 Object 外,所有类必须有一个父类。作为子类,类 B 的实例拥有类 A 所有的成员变量,但对于 private 类型的成员变量类 B 却没有访问权限,这保障了类 A 的封装性。以上的代码片段说明,类 B 由类 A 继承而来的,类 B 是类 A 的子类。
2024-06-27 13:36:35
687
原创 Java - File 和 IO - File类
该类主要用于文件和目录的创建、文件的查找和文件的删除等。根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。通过将给定的 file: URI 转换成一个抽象路径名来创建一个新的 File 实例。File对象代表磁盘中实际存在的文件和目录。通过以下构造方法创建一个File对象。通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。通过给定的父抽象路径名和子路径名字符串创建一个新的File实例。创建File对象成功后,可以使用以下列表中的方法操作文件。
2024-06-26 14:07:54
585
原创 Java - File 和 IO - FileWriter类
FileWriter类从OutputStreamWriter类继承而来。该类按字符向流中写入数据。可以通过以下几种构造方法创建需要的对象。在给出文件名的情况下构造 FileWriter 对象,它具有指示是否挂起写入数据的 boolean 值。创建FileWriter对象成功后,可以参照以下列表里的方法操作文件。在给出 File 对象的情况下构造一个 FileWriter 对象。在给出 File 对象的情况下构造一个 FileWriter 对象。构造与某个文件描述符相关联的 FileWriter 对象。
2024-06-26 14:07:15
290
原创 Java - File 和 IO - FileReader类
FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。可以通过以下几种构造方法创建需要的对象。在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。在给定从中读取数据的 File 的情况下创建一个新 FileReader。创建FIleReader对象成功后,可以参照以下列表里的方法操作文件。在给定从中读取数据的文件名的情况下创建一个新 FileReader。
2024-06-26 14:06:38
161
原创 Java - Stream 流 - DataOutputStream类
下面的例子演示了DataInputStream和DataOutputStream的使用,该例从文本文件test.txt中读取5行,并转换成大写字母,最后保存在另一个文件test1.txt中。数据输出流允许应用程序以与机器无关方式将Java基本数据类型写到底层输出流。创建对象成功后,可以参照以下列表给出的方法,对流进行写操作或者其他操作。下面的构造方法用来创建数据输出流对象。
2024-06-26 14:05:39
395
原创 Java - Stream 流 - DataInputStream类
下面的例子演示了DataInputStream和DataOutputStream的使用,该例从文本文件test.txt中读取5行,并转换成大写字母,最后保存在另一个文件test1.txt中。另一种创建方式是接收一个字节数组,和两个整形变量 off、len,off表示第一个读取的字节,len表示读取字节的长度。数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。下面的构造方法用来创建数据输入流对象。
2024-06-26 14:04:55
359
原创 Java - Stream 流 - ByteArrayOutputStream类
字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中。创建字节数组输出流对象有以下几种方式。成功创建字节数组输出流对象后,可以参见以下列表中的方法,对流进行写操作或其他操作。下面的构造方法创建一个32字节(默认大小)的缓冲区。另一个构造方法创建一个大小为n字节的缓冲区。
2024-06-26 14:04:09
289
原创 Java - Stream 流 - ByteArrayInputStream类
字节数组输入流在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中。创建字节数组输入流对象有以下几种方式。另一种创建方式是接收一个字节数组,和两个整形变量 off、len,off表示第一个读取的字节,len表示读取字节的长度。成功创建字节数组输入流对象后,可以参见以下列表中的方法,对流进行读操作或其他操作。
2024-06-26 14:03:27
250
HCL.AppScan.Standard v10.5.0
2024-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人