![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SSM
文章平均质量分 64
SSM
Gy-qwert
这个作者很懒,什么都没留下…
展开
-
01-Spring家族和发展史
在Spring的发展历史中,最重要的里程碑事件包括:2004年发布1.0版、2006年发布2.0版、2009年发布3.0版、2013年发布4.0版和Spring Boot项目、2014年发布Spring Cloud项目。它逐渐演变为一个全面的企业级开发框架,具有众多的模块和组件,包括IoC容器、AOP框架、数据访问、Web开发、集成等。Rod Johnson意识到了这一点,并希望开发一款框架来简化Java应用程序的开发和维护,他利用他的经验、知识和对企业应用开发的理解,创造了Spring框架。原创 2023-06-11 22:55:15 · 575 阅读 · 0 评论 -
02-Spring FrameWork 系统架构
1. 核心容器(Core Container):提供了IoC(Inversion of Control)容器和AOP(Aspect Oriented Programming)框架。IoC容器可以帮助我们管理对象之间的依赖关系,而AOP框架则可以让我们以声明式方式实现横切关注点的编程,例如日志、事务等。4. AOP模块:提供了对AOP编程的支持,可以让我们在方法执行前、执行后、抛出异常时等关键点进行切面处理。5. 测试模块(Testing):提供了一些测试相关的类和工具,可以方便地进行单元测试和集成测试。原创 2023-06-11 23:01:55 · 135 阅读 · 0 评论 -
03-Spring核心概念IoC\DI
从而大大降低了组件之间的耦合度,并提高了代码的可维护性和可扩展性。在使用DI时,我们通常需要定义Bean(即对象),并通过配置文件或注解的方式告诉Spring容器如何创建和管理这些Bean。在创建Bean时,容器会通过反射机制检测Bean的构造函数、Setter方法以及字段,根据Bean的依赖关系自动将依赖注入进去,从而完成对象之间的协作。在DI模式中,有以下几种类型的依赖注入方式:1. 构造函数注入:在对象创建时,容器会通过Bean的构造函数完成依赖注入。这种方式适用于那些强制依赖特定参数的情况。原创 2023-06-11 23:11:30 · 35 阅读 · 0 评论 -
04-IoC简单实现案例
在测试代码中,我们首先创建了一个容器对象,然后使用XmlBeanFactory从配置文件中读取Bean对象,并将它们添加到容器中。配置文件中定义了两个Bean对象:一个是用户对象(id为"user"),另一个是订单对象(id为"order")。订单类需要依赖用户类才能创建订单,也就是说,订单类需要在创建时获得一个用户对象。容器中有一个Map用于存储Bean对象,addBean方法用于向容器中添加Bean对象,getBean方法用于获取Bean对象。接下来,我们需要定义一个容器来管理Bean对象。原创 2023-06-12 14:58:55 · 55 阅读 · 0 评论 -
05-bean的配置
首先需要定义一个Java类,并且实现我们需要的功能。这个User类只有一个属性name,及对应的getter和setter方法。原创 2023-06-12 22:49:29 · 539 阅读 · 0 评论 -
06-bean的三种实例化方法
在上述示例中,id 属性指定了该 Bean 的唯一标识符,class 属性为 UserFactory 类的全限定名,factory-bean 属性指定了工厂实例的名称,factory-method 属性指定了调用工厂实例方法时要使用的方法名称。在上述示例中,id 属性指定了该 Bean 的唯一标识符,class 属性指定了该 Bean 的类型,factory-bean 属性指定了工厂类的名称,factory-method 属性指定了工厂方法的名称。原创 2023-06-12 22:58:37 · 226 阅读 · 0 评论 -
07-bean的生命周期及控制
在这个阶段中,Spring 容器会将容器相关的信息注入到 Bean 实例中,例如实现 BeanNameAware 接口可获取 Bean 的名称,实现 ApplicationContextAware 接口可获取应用上下文对象等。在这个阶段中,Spring 容器会在 Bean 被销毁时执行用户自定义的销毁方法,例如通过配置文件中的 destroy-method 属性或者实现 DisposableBean 接口的 destroy() 方法进行指定。Bean 的实例化:根据配置或代码创建一个 Bean 实例。原创 2023-06-13 00:50:42 · 74 阅读 · 0 评论 -
08-依赖注入方式
其中, 元素的 ref 属性表示要注入的 Bean 的 ID,Spring 会自动将这个 ID 对应的 Bean 实例注入到 Person 中的 address 属性中。需要注意的是,在注入引用类型的属性时,被注入的 Bean 必须先通过 XML 配置文件中的 元素进行定义,否则会出现找不到 Bean 的错误。需要注意的是,在注入引用类型的属性时,被注入的 Bean 必须先通过 XML 配置文件中的 元素进行定义,否则会出现找不到 Bean 的错误。原创 2023-06-13 01:42:13 · 30 阅读 · 0 评论 -
09-依赖的自动装配
依赖自动装配(Dependency Autowiring)是 Spring 框架中非常重要的一个特性,它可以在无需显式配置 Bean 之间关系的情况下自动将相互依赖的 Bean 注入到目标对象中,从而简化了配置文件的编写和维护工作。原创 2023-06-13 19:11:37 · 60 阅读 · 0 评论 -
10-集合注入(数组、List、Set、Map、Properties)
集合注入是 Spring 中的一种依赖注入方式,可以通过它将一个集合类型(如数组、List、Set、Map、Properties 等)的 Bean 注入到目标 Bean 中。原创 2023-06-13 19:45:01 · 180 阅读 · 0 评论 -
11-数据源对象的管理 (Druid 、C3P0 )
在 Spring 中,可以通过配置数据源对象来实现数据库连接的管理,常见的数据源有 C3P0、Druid 等。原创 2023-06-13 20:36:22 · 138 阅读 · 0 评论 -
12-加载properties文件
在 Spring 中,可以使用 标签来加载 properties 文件并注入属性值,达到以一种简单且优雅的方式配置应用程序的目的。原创 2023-06-13 20:59:58 · 122 阅读 · 0 评论 -
13-容器
在上面的代码中,我们首先创建了一个 AnnotationConfigApplicationContext 对象,并通过scan()方法扫描指定路径下的所有 Bean,然后通过refresh()方法加载并注册这些 Bean 到容器中。最后,我们通过getBean()方法获取名为“userService”的 Bean 实例,并输出其名称。第一步是加载配置文件。容器(也称为 IoC 容器或 Bean 容器)的创建是 Spring 框架的核心之一,一般有两种创建方式:基于 XML 配置文件和基于注解。原创 2023-06-14 15:09:58 · 26 阅读 · 0 评论 -
14-spring注解开发
Spring 注解开发是在 Spring 框架中使用注解来代替 XML 配置文件来实现 Bean 的创建和依赖注入。相比传统的 XML 配置方式,注解开发更加简单、便捷、灵活,可以提高代码的可读性和开发效率。原创 2023-06-19 17:45:19 · 28 阅读 · 0 评论 -
15-注解开发bean的作用范围与生命周期管理
在同一个 Web 应用程序中,所有的 Servlet 和 Filter 都可以访问同一个 Application 应用作用域的 Bean,因此这些 Bean 可以在整个应用程序中共享。需要注意的是,该方法不能有任何参数,且返回值类型为 void。对于相同的会话,Spring 将为每个请求创建一个新的 Bean 实例,这些实例仅在该会话内可见,并在会话结束时销毁。@PostConstruct 和 @PreDestroy 是两个常用的注解,它们可以用于在 Bean 的初始化和销毁过程中执行一些特定的操作。原创 2023-06-19 20:45:14 · 50 阅读 · 0 评论 -
16-注解开发依赖注入
常见的配置文件格式包括 .properties 和 .xml 两种。而 .xml 则是一种更加复杂、结构化的格式,适合用于保存一些对象或者复杂类型的配置项。例如:原创 2023-06-20 14:46:36 · 156 阅读 · 0 评论 -
17-注解开发管理第三方bean
需要注意的是,通过方法形参注入 Bean 对象时,容器会自动匹配符合该类型的 Bean 对象,并传递进方法中。需要注意的是,使用 @Bean 注解管理第三方 Bean 时,需要保证该 Bean 类有一个公共的无参构造方法,并且能够被实例化和初始化。需要注意的是,使用 @Import 注解管理第三方 Bean 时,需要保证被导入的第三方 Bean 对象具有可访问性,可以被当前应用程序所使用。在 Spring 中,我们可以通过使用 @Bean 注解定义一个方法,该方法返回一个第三方 Bean 对象。原创 2023-06-20 15:27:13 · 140 阅读 · 0 评论 -
18-spring整合mybatis
MapperScannerConfigurer 可以自动扫描 Mapper 接口并注入 SqlSessionFactory,和使用 XML 配置是类似的。和 DataSource 类似,我们可以直接从 SqlSessionFactoryBean 类中获取一个 SqlSessionFactory。使用 Java Config 配置数据源,从 DataSource 类中获取一个数据源即可。原创 2023-06-20 16:37:39 · 35 阅读 · 0 评论 -
19-AOP概述和工作流程
AOP(Aspect-Oriented Programming),即面向切面编程,是 OOP 编程的一个补充。在 AOP 中,通过将横切关注点(如日志记录、安全控制等)与业务逻辑分离,以提高系统的模块化程度和代码的可重用性。AOP 的核心思想是将业务逻辑中的关注点和横切关注点(Cross-cutting Concerns)分离开来,然后通过在代码运行的不同阶段来动态地将其组合起来,形成最终的执行结果。原创 2023-06-20 23:54:24 · 52 阅读 · 0 评论 -
20-AOP的简单实现
2.定义dao接口和实现类定义接口:定义实现类:3.配置切面和通知:在 Spring AOP 中,切面由切点和通知组成。定义通知类:定义切入点:4.开启Spring对AOP注解驱动支持5.编写测试类在main()方法中,我们首先通过创建AnnotationConfigApplicationContext对象并传入配置类SpringConfig.class来获得Spring容器对象ctx。然后,我们使用ctx.getBean(BookDao.cla原创 2023-06-21 00:14:19 · 132 阅读 · 0 评论 -
21-AOP的切入点表达式
表示任意字符,例如execution((..))表示匹配com.example.service包中任意两级目录下的所有类的所有方法。..:表示任意多级子包,例如execution(* com.example..(..))表示匹配com.example包及其子包中的所有类的所有方法。():括号内可选,用于指定方法参数类型。原创 2023-06-21 16:59:54 · 98 阅读 · 0 评论 -
22-AOP通知类型
在 AOP 中,通知(Advice)是指在目标方法执行前、执行后或发生异常时需要执行的一段代码。原创 2023-06-21 17:44:40 · 106 阅读 · 0 评论 -
23-使用AOP通知获取原始操作数据
具体来说,JoinPoint 包含了连接点的静态信息,例如方法签名和参数列表,而 ProceedingJoinPoint 则包含了连接点的动态信息,例如方法执行的前后状态和返回值。在上面的代码中,我们在环绕通知中调用 proceed() 方法执行目标方法,并获取其返回值。然后输出返回值到控制台中,并将其返回给调用方。使用 AOP 通知获取原始操作返回值数据,需要使用环绕通知,并在相应的通知中获取目标方法的返回值。使用 AOP 通知获取原始操作异常数据,需要使用异常通知,并在相应的通知中获取抛出的异常信息。原创 2023-06-21 20:25:52 · 708 阅读 · 0 评论 -
24-spring事务概述
Spring 事务是基于 AOP 实现的,它可以管理任何由 Spring 容器管理的 bean 中的方法。这意味着,Spring 事务并不仅仅局限于管理数据层,它可以管理任何 Spring 容器管理的 bean 中的方法,包括业务层、控制层等。只要在需要进行事务控制的方法上添加 @Transactional 注解,Spring 就会将该方法包装在一个事务中,并管理事务的提交和回滚。当然,在实际开发中,通常情况下我们会将事务控制放在数据层来完成。原创 2023-06-22 13:20:41 · 38 阅读 · 0 评论 -
25-spring事务操作步骤
在需要开启事务的方法上添加注解,或在类级别添加该注解以将整个类的方法都纳入事务管理。可以在注解上指定一些属性,例如事务的传播行为、隔离级别、回滚规则等。@Service@Autowired// 执行转账操作// ...银行转账是一个常见的示例,用于说明事务管理的重要性和如何保证数据的一致性。以下是一个简单的银行转账案例:假设我们有一个 BankAccount 表,其中包含用户的账户信息,包括账户ID、账户名称和余额。接下来,我们使用 Java 来实现银行转账的业务逻辑。原创 2023-06-22 14:55:18 · 86 阅读 · 0 评论 -
26-事务相关配置
timeout(超时时间):这个属性用于定义事务的超时时间,即事务可以被允许的最长执行时间。noRollbackFor:这个属性用于定义不触发事务回滚的异常类型。rollbackFor:这个属性用于定义触发事务回滚的异常类型。原创 2023-06-22 15:13:40 · 63 阅读 · 0 评论 -
27-事务的传播-转账业务追加日志操作
在上述示例代码中,我们将日志记录的逻辑提取到了独立的logTransfer方法中,并且将该方法的事务传播行为设置为REQUIRES_NEW,表示会开启一个新的事务来记录日志。这样可以确保日志的记录与转账业务的事务相互独立,不会受到转账操作的提交或回滚影响。在转账业务方法中,可以嵌套一个独立的方法来记录日志,并使用事务的传播行为设置为REQUIRES_NEW,表示该方法将开启一个新的事务。通过以上的处理,无论转账操作是否成功,都能够记录相应的日志信息,在出现异常时也能够保证日志的完整性。原创 2023-06-22 15:22:23 · 54 阅读 · 0 评论 -
28-springMVC概述和简单的入门案例
Spring MVC是Spring Framework的一部分,是一个基于Java的Web应用程序开发框架。它提供了一种模型-视图-控制器(Model-View-Controller,MVC)的架构模式来构建灵活、可扩展和松耦合的Web应用程序。:模型表示应用程序的数据和业务逻辑。它可以是POJO(Plain Old Java Object)类、或者是与数据库交互的领域对象,负责封装和处理数据。:视图负责展示模型数据给用户,并接收用户的输入。原创 2023-06-25 12:53:53 · 23 阅读 · 0 评论 -
29-bean的加载控制
当 Spring 加载时,它将只扫描 com.gy 包下除了 com.gy.controller 包以及其子包外的所有组件,并将它们作为 Bean 进行加载和管理。上述代码中,使用 @ComponentScan 注解来指定要扫描的基础包路径为 com.gy。然后,通过 excludeFilters 属性来设置排除规则。上述代码需要放在一个配置类中(通常以 @Configuration 注解标记),然后在 Spring 的配置中引入这个配置类。原创 2023-06-25 14:52:13 · 35 阅读 · 0 评论 -
30-设置请求映射路径
在Spring中,请求映射路径的配置用于将特定的URL请求映射到相应的处理方法上。Spring提供了多种注解来配置请求映射路径,用于更加灵活和精确地指定请求对应的处理方法。原创 2023-06-25 15:59:12 · 149 阅读 · 0 评论 -
31-Spring请求传参数
在上述示例中,使用Spring的@RequestBody注解将请求体中的JSON字符串转换为对应的POJO对象。当POST请求到达/api/user路径时,Spring会自动将请求体中的JSON字符串解析为User对象,并将其作为方法的参数传递。name=John&age=30,接收端的getUser方法将会被调用,且name参数值为 John ,age参数值为30。这样,当请求到达/api/user路径时,Spring会自动解析URL中的查询字符串,并将参数值绑定到对应的方法参数上。原创 2023-06-25 17:13:55 · 195 阅读 · 0 评论 -
32-Json数据传递参数
使用@EnableWebMvc注解后,Spring会自动配置一些默认的Spring MVC组件,例如请求映射处理器、视图解析器等。你还可以通过实现WebMvcConfigurer接口来进行更高级的自定义配置。注解将请求体中的JSON数据映射到MyData对象。然后,可以在processParams()方法中处理接收到的参数。在上述示例中,MyData是一个自定义的POJO类,用于表示接收到的JSON数据作为参数。原创 2023-06-25 17:32:26 · 153 阅读 · 0 评论 -
33-日期类型参数传递
当传递的日期参数与指定的格式匹配时,Spring将会自动将日期字符串转换为Date对象,并将其传递给processDate方法进行处理。另外还可以在实体类的属性上使用@DateTimeFormat注解,以指定日期格式并自动进行日期字符串到Date对象的转换。需要注意的是,使用@DateTimeFormat注解时,要先确保已经添加了对应的依赖或配置,以支持日期格式的转换。这个注解通常与Spring框架一起使用。在传递实体类对象时,Spring会将传入的日期字符串自动转换为Date对象,并赋值给相应的属性。原创 2023-06-25 19:45:10 · 549 阅读 · 0 评论 -
34-响应
在上述示例中,我们通过在类上添加@RestController注解,将MyController类标识为一个控制器,并且该控制器的所有方法都会返回数据而不是视图。然后,在getUser()方法上添加了@RequestMapping("/user")注解,该方法将响应路径"/user"的请求。@RestController注解表示该类是一个控制器,并且所有的方法都会返回数据而不是视图。当客户端发送请求到"/user"路径时,getUser()方法会被调用,并且返回一个User对象作为响应数据。原创 2023-06-26 16:54:13 · 26 阅读 · 0 评论 -
35-REST风格
REST(Representational State Transfer)是一种软件架构风格,常用于设计分布式系统和构建Web服务。它强调在网络上以一种无状态、可缓存、可伸缩的方式进行资源的交互。在REST风格中,使用HTTP协议的不同方法(如GET、POST、PUT、DELETE)对资源进行操作。原创 2023-06-26 17:07:35 · 34 阅读 · 0 评论 -
36-SSM整合
jdbc配置文件属性根据自己的需求自行配置。原创 2023-06-29 15:03:42 · 22 阅读 · 0 评论 -
37-异常处理器和页面放行
在Spring MVC框架中,异常处理器(Exception Handler)用于捕获和处理控制器(Controller)层中发生的异常。Spring MVC提供了多种方式来实现异常处理。业务异常 (BusinessException):规范的用户行为产生的异常、不规范的用户行为操作产生的异常。系统异常(SystemException):项目运行过程中可预计且无法避免的异常。其他异常 (Exception):编程人员未预期到的异常。异常处理器写在表现层:例如。原创 2023-06-29 20:56:40 · 26 阅读 · 0 评论 -
38-Springmvc拦截器概述以及简单实现(和过滤器的区别)
Spring MVC拦截器(Interceptor)是Spring MVC框架中的一个组件,用于拦截处理器(Handler)的执行。它可以在请求到达控制器之前或之后进行一些预处理或后处理操作。鉴权和身份验证:拦截器可以验证用户的身份、权限,并决定是否允许请求继续执行。参数预处理和后处理:拦截器可以在请求到达控制器之前对请求参数进行预处理(如数据校验、数据转换等),并在请求处理完成后对响应进行后处理(如统一封装返回结果)。原创 2023-06-30 20:45:47 · 56 阅读 · 0 评论 -
39-springmvc拦截器参数
当使用拦截器(Interceptor)处理请求时,拦截器的方法可以接收一些参数,用于获取和操作请求、响应以及处理程序的相关信息。通过拦截器参数,可以获取和处理请求、响应以及处理程序的相关信息。这使得拦截器成为实现一些通用功能的强大工具,如身份验证、权限检查、日志记录等。原创 2023-06-30 21:07:57 · 46 阅读 · 0 评论 -
40-拦截器链配置
默认情况下,拦截器的执行顺序与添加到拦截器链中的顺序相同。如果希望指定拦截器的执行顺序,可以使用order()方法进行设置。较小的值具有更高的优先级。@Override// 添加更多的拦截器...上述中:拦截器1的执行顺序被设置为1,拦截器2的执行顺序被设置为2。这样,拦截器1会在拦截器2之前执行。原创 2023-06-30 23:17:40 · 87 阅读 · 0 评论