- 博客(145)
- 收藏
- 关注
原创 SpringMVC - 响应处理
视图解析器(View Resolver)在Spring MVC框架中是一个非常重要的组件,它的主要职责是将控制器(Controller)返回的逻辑视图名称转换成实际的视图对象(View),这个视图对象可以用来渲染最终呈现给用户的HTML页面或其他类型的响应。通过这个配置,当控制器(Controller)返回一个逻辑视图名时,视图解析器会根据前缀和后缀拼接成实际的视图路径,然后去寻找并返回对应的视图(JSP文件)。在浏览器端进行页面的跳转,需要发送两次请求(第一次是人为的,第二次是自动的。
2024-08-07 11:07:12
731
原创 Spring MVC - 请求处理
例如,GET方法用于检索资源,POST用于创建新资源,PUT用于更新现有资源,DELETE用于删除资源。超媒体作为应用状态引擎(HATEOAS),即响应中包含链接到其他相关资源的信息,使得客户端能够发现和访问更多资源。注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上(以该地址作为父路径)。:虽然这不是强制性的,但它允许服务器临时扩展客户端的功能,例如通过JavaScript脚本。:服务器端的响应不应依赖于客户端保存的状态信息,每次请求都应包含处理该请求所需的所有信息。
2024-07-29 16:57:51
464
原创 Spring MVC - 介绍
Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从一开始就包含在 Spring 框架中。正式名称“Spring Web MVC”来自其源模块的名称(),但它更常见的名称是“Spring MVC”。
2024-07-26 16:08:03
747
原创 Spring - 事务 - 失效原因及解决方法
Transactional 注解在 Spring 中用于声明式事务管理,它允许你在不编写显式事务代码的情况下控制事务边界。确保在应用中正确理解和使用 @Transactional,并根据上述原因进行排查,通常可以解决大多数事务失效的问题。如果问题仍然存在,可能需要更深入地检查代码和配置细节。
2024-07-24 13:19:45
1805
原创 Spring - 事务 - 配置属性
(默认事务)需要事务。若当前无事务,新建一个事务;若当前有事务,加入此事务中。若当前没有事务,以非事务方式执行;若当前有事务,加入此事务中。适用内部事务和外部事务不存在业务关联情况,如日志。无论当前是否有事务,都新建事务运行。可重复读:REPEATABLE READ。读已提交:READ COMMITTED。串行化:SERIALIZABLE。
2024-07-24 11:42:38
704
原创 Spring - 事务 - 事务介绍
事务(Transaction)在数据库管理中指的是一个工作单元,它由一系列的操作组成,这些操作要么全部成功,要么全部失败。事务的概念对于确保数据的完整性和一致性至关重要,尤其是在并发环境和分布式系统中。
2024-07-18 17:44:57
269
原创 Spring - AOP - 底层原理
然而,它的缺点也很明显,如果需要代理的对象很多,那么需要为每一个对象都创建一个代理类,这会导致代码量的增加和维护成本的上升。此外,如果接口中的方法数量增加,那么所有的代理类都需要进行修改,这违反了开闭原则(Open/Closed Principle)。因此,在实际应用中,动态代理往往更受欢迎,因为它可以避免这些问题。举个例子:客户找老板, 让秘书登记来访人员和时间, 记录来访用时,并且让秘书拒绝老板不想见的客户。:这是一个工具类,用于创建代理实例。方法就会被执行,从而实现了在方法调用前后的增强行为。
2024-07-18 15:19:04
1086
原创 Spring - AOP - 切点
当多个增强的切点表达式相同时,可以将切点表达式进行抽取。Spring提供了@PointCut注解,该注解的作用是将公共的切入点表达式抽取出来,需要的时候引用改切入点表达式即可。
2024-07-16 16:23:45
959
原创 Spring - AOP - 介绍
Spring 框架的一个关键组件是面向切面的编程(AOP)框架。面向切面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。在软件开发过程中有各种各样的很好的切面的例子,如日志记录、审计、声明式事务、安全性和缓存等。在 OOP 中,关键单元模块度是类,而在 AOP 中单元模块度是切面。依赖注入帮助你对应用程序对象相互解耦合,AOP 可以帮助你从它们所影响的对象中对横切关注点解耦。
2024-07-16 13:15:42
837
原创 Spring - AOP - 术语
在切面的某个特定的连接点上执行的动作。许多 AOP 框架,包括 Spring 在内,都是以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。通知和切点表达式相关联,并在满足这个切点的连接点上运行(例如,当执行某个特定名称的方法时)。顾问是 Advice 的一种包装体现,Advisor 是 Pointcut 以及 Advice 的一个结合,用来管理 Advice 和 Pointcut。在Spring AOP中,一个连接点总是代表一个方法的执行,其实就代表增强的方法。即包含主业务逻辑的类的对象。
2024-07-10 17:58:30
337
原创 Spring - IOC - Bean生命周期
在Spring框架中,Bean的生命周期是指从Bean的实例化开始直到销毁的过程。当Spring容器关闭时,如果Bean定义了。属性,那么对应的初始化方法会被调用。属性,那么对应的销毁方法会被调用。
2024-07-10 16:21:30
1473
原创 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
623
原创 Spring - IOC - 实例化Bean
FactoryBean是一个接口,需要有一个Bean,实现FactoryBean接口的Bean就成为了特殊的Bean。如果有参构造函数有多个并且没有无参构造函数,会报错;需要一个无参构造函数。如果只有一个有参构造函数spring会调用,并且把产生自动装配进来。===> 想通过容器去获取对应的类型,就需要。===>当通过Bean名称实际获取到的就是。有多个构造函数依然会调用无参构造函数。可以自由的选择构造函数进行实例化。在Bean名称开头使用。
2024-07-07 11:17:46
721
原创 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
787
原创 Maven - 目录结构
目录:Maven - 目录结构1. 各个目录的作用2. 约定目录结构的意义3. 约定大于配置Maven - 目录结构1. 各个目录的作用另外还有一个target目录专门存放构建操作输出的结果。2. 约定目录结构的意义Maven为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。例如:Maven执行编译操作,必须先去Java源程序目录读取Java源代码,然后执行编译,最后把编译结果存放在target目录。3. 约定大于配置Maven对于目录结构这个问题,没有采用配置的方式
2024-07-01 16:11:52
216
原创 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
427
原创 CentOS 7 安装 MySQL
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包。下载地址为:https://dev.mysql.com/downloads/repo/yum/
2024-07-01 10:48:11
156
原创 Java - 多态
在编译的时候,编译器使用Employee类中的mailCheck()方法验证该语句, 但是在运行的时候,Java虚拟机(JVM)调用的是Salary类中的mailCheck()方法。还可以引用和它类型相同的或者相兼容的对象。Java中所有的方法都能以这种方式表现,借此,重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型。因为e是Employee的引用,所以调用e的mailCheck()方法则有完全不同的结果。当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。
2024-06-27 13:42:59
1038
原创 Java - 包(package)
而且在实际开发中这样做是值得提倡的,当你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和注释等是相关的。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个package的声明放在这个源文件的开头。编译之后的.class文件应该和.java源文件一样,它们放置的目录应该跟包的名字对应起来。编译的时候,编译器为包中定义的每个类、接口等类型各创建一个不同的输出文件,输出文件的名字就是这个类型的名字,并加上.class作为扩展后缀。
2024-06-27 13:41:03
941
原创 Java - 接口
正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。以上的程序片段是合法定义的子接口,与类不同的是,接口允许多重继承,而 Sports及 Event 可能定义或是继承相同的方法。Hockey接口自己声明了四个方法,从Sports接口继承了两个方法,这样,实现Hockey接口的类需要实现六个方法。
2024-06-27 13:40:22
768
原创 Java - 封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。要访问该类的代码和数据,必须通过严格的接口控制。
2024-06-27 13:39:41
298
原创 Java - 抽象类
在 Java 面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。尽管我们不能实例化一个Employee类的对象,但是如果我们实例化一个Salary类对象,该对象将从Employee类继承3个成员变量和7个成员方法。继承抽象方法的子类必须重写该方法。如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。
2024-06-27 13:38:59
412
原创 Java - 重写(Override)与重载(Overload)
方法的重写 (Overriding) 和重载 (Overloading) 是 java 多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载 (Overloading)。(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写 (Overriding)。
2024-06-27 13:37:51
1201
HCL.AppScan.Standard v10.5.0
2024-04-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人