
Spring
文章平均质量分 69
一些包括Spring、SpringMVC、SpringBoot的基本知识与整合
Artisan_w
这个作者很懒,什么都没留下…
展开
-
SpringBean的生命周期
而 Spring 中的对象是 bean,bean 和普通的 Java 对象没啥大的区别,只不过 Spring 不再自己去 new 对象了,而是由 IoC 容器去帮助我们实例化对象并且管理它,我们需要哪个对象,去问 IoC 容器要即可。大家总是会错误的理解Bean的“实例化”和“初始化”过程,总会以为初始化就是对象执行构造函数生成对象实例的过程,其实不然,在初始化阶段实际对象已经实例化出来了,初始化阶段进行的是依赖的注入和执行一些用户自定义的初始化逻辑。2、Spring 中的 bean 的作用域有哪些?原创 2024-01-04 23:34:12 · 1032 阅读 · 0 评论 -
Spring事务
事务是逻辑上的一组操作,要么都执行,要么都不执行。需要格外注意的是:事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的 innodb引擎。但是,如果把数据库引擎变为 myisam,那么程序也就不再支持事务了!我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。事务最经典也经常被拿出来说例子就是转账了。原创 2024-01-04 23:32:30 · 1364 阅读 · 1 评论 -
一个简易的SpringAOP实例
3、被代理对象接口与被代理对象。还有一种可以写法,直接运行即可。原创 2023-12-29 17:26:53 · 794 阅读 · 0 评论 -
手写Spring与基本原理--简易版
从SpringBean的加载流程博文中可以知道Spring的简易加载流程Spring bean的生命周期包括实例化、属性赋值、初始化前回调、自定义初始化、初始化后回调、初始化完成、销毁前回调、自定义销毁这些阶段和回调方法。接下来讲根据上述流程逐步深入首先进行简单的容器设计,我们需要将一个个的类进行统一的定义,这个定义名称为BeanDefinition,他包含众多的属性,包括是否是单例,类的名称等等。为了减少代码的复杂性,这里不再展开简单定义这个类。原创 2023-12-29 17:22:13 · 1380 阅读 · 0 评论 -
Spring的容器事件和事件监听器
在Spring框架中,事件(Event)和事件监听器(EventListener)是用于实现发布-订阅模式的重要机制,用于解耦应用程序中的组件。Spring的事件机制建立在观察者模式的基础上,通过定义事件和事件监听器,允许应用程序中的不同部分在发生特定事件时进行通信。ApplicationEvent(应用事件):表示事件的基本类。您可以扩展此类以创建自定义事件。ApplicationEventPublisher(应用事件发布者):用于发布事件的接口。原创 2023-12-28 19:48:26 · 675 阅读 · 0 评论 -
Spring的Aware接口调用与原理
Aware接口是一组特定于Spring容器的接口,通过这些接口,你的Bean可以感知(aware)到Spring容器的存在,并获取与Spring容器相关的一些资源或服务。这些接口都以Aware结尾,例如BeanNameAware、ApplicationContextAware等。以下是一些常见的Aware接口及其用途:接口方法:setBeanName(String name)。允许Bean获取自己在Spring容器中的名称。原创 2023-12-27 11:28:01 · 585 阅读 · 0 评论 -
SpringBean的初始化与销毁
初始化是指在 bean 创建之后、在将 bean 交给 Spring 容器管理之前或之后执行的一些特定操作。在 Spring 中,你可以通过 @PostConstruct 注解、XML 配置文件的 属性或 JavaConfig 中的 @Bean(initMethod) 来定义初始化方法。时间点:初始化方法 在 bean 创建之后、在将 bean 交给 Spring 容器管理之前或之后执行。目的:初始化方法 用于执行一些初始化逻辑,例如资源的加载、连接的建立等。原创 2023-12-26 19:53:33 · 468 阅读 · 0 评论 -
Spring--BeanFactoryPostProcessor与BeanPostProcessor的职责与区别
在容器加载 bean 定义后,实例化 bean 之前对 bean 的定义进行全局性的修改。通常用于修改 bean 的元数据,例如属性值的修改、添加属性等。postProcessBeanFactory 方法在 bean 定义加载后、实例化之前被调用。在 bean 实例化和初始化的过程中执行自定义的逻辑。通常用于对特定 bean 实例的初始化进行定制。原创 2023-12-26 14:30:01 · 488 阅读 · 0 评论 -
SpringBean的加载流程
在Spring框架中,每个bean都有自己的生命周期,它经历了一系列的阶段和回调方法。下面是典型的Spring bean的生命周期:实例化(Instantiation):在这个阶段,Spring容器通过反射或工厂方法创建bean的实例。属性赋值(Population of properties):在这个阶段,Spring容器将注入(或设置)bean的各种属性和依赖关系。原创 2023-10-13 10:57:57 · 235 阅读 · 0 评论 -
SpingAOP
Spring的AOP(面向切面编程)是Spring框架的一个重要模块,它允许你在应用程序中以一种模块化的方式处理横切关注点(Cross-cutting Concerns)。横切关注点通常包括日志记录、安全性、事务管理等与应用程序的核心业务逻辑分离的功能。AOP通过将这些关注点从业务逻辑中分离出来,使代码更易于维护、理解和测试。原创 2023-10-13 10:56:48 · 64 阅读 · 0 评论 -
GET与POST的区别
1、发送的数据数量在 GET 中,只能发送有限数量的数据,因为数据是在 URL 中发送的。在 POST 中,可以发送大量的数据,因为数据是在正文主体中发送的。2、安全性GET 方法发送的数据不受保护,因为数据在 URL 栏中公开,这增加了漏洞和黑客攻击的风险。POST 方法发送的数据是安全的,因为数据未在 URL 栏中公开,还可以在其中使用多种编码技术,这使其具有弹性。3、加入书签中GET 查询的结果可以加入书签中,因为它以 URL 的形式存在;而 POST 查询的结果无法加入书签中。4、编原创 2021-10-11 15:34:16 · 87 阅读 · 0 评论 -
SpringBoot的配置
主要关于配置文件,加载顺序和配置原理SpringBoot的配置一、配置文件1、配置文件2、yml语法(1)基本语法(2)值的写法字面量:普通的值(数字,字符串,布尔)对象,Map(键值对)数组(List、set)测试3、properties配置文件4、利用@Value注解配置5、@PropertySource与@ImportResource(1)@PropertySource(2)@ImportSource6、@Configuration7、Profile多环境(1)多Profile文件(2)激活Pro原创 2020-11-19 16:25:48 · 462 阅读 · 0 评论 -
SpringBoot高级应用---消息队列
SpringBoot与消息队列概述一、RabbitMQ1,RabbitMQ简介:2,核心概念二、RabbitMQ运行机制1.2.读入数据总结概述1,大多数应用中,可以通过消息服务中间件来提升系统异步通信、扩展解耦能力2,消息服务的两个重要概念:消息代理(message broker)和目的地(destination)当消息发送者发送消息后,将由消息代理接管,消息代理保证消息传递到指定目的地。3,消息队列主要有两种形式的目的地队列:点对点消息通信主题:发布(publish)/订阅(subscr原创 2020-11-26 22:03:57 · 569 阅读 · 0 评论 -
Spring Boot源码分析-pom.xml
Spring Boot细节一, pom1,父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePat原创 2020-07-31 15:03:20 · 215 阅读 · 0 评论 -
Spring Boot基础---对于日志的配置与注意的问题
日志一、日志框架?二、SLF4j的使用1.如何在系统中使用SLF4j2.遗留问题三.SpringBoot的日志关系四. 日志的使用1. 默认配置2,日志配置位置3. 其他4. 自定义日志配置5. 切换日志框架一、日志框架?市面上的日志框架:JUL、JCL、jboss-logging、Logback、Log4j、Log4j2、SLF4j…日志门面(抽象层)日志实现JCL、SLF4j、jboss-loggingLog4j、JUL、Log4j2、Logback左边选择一个抽象原创 2020-11-20 20:14:19 · 199 阅读 · 0 评论 -
SpringBoot配置环境
Spring BootSpring Boot 是一个快速开发框架,可以迅速搭建一套基于Spring框架体系的应用,是Spring Cloud的基础。Spring Boot开启了各种自动装配,从而简化代码的开发,不需要编写各种配置文件,只需要引入相关依赖就可以迅速搭建一个应用。特点:1,不需要web.xml2,不需要springmvc.xml3,不需要tomcat,spring Boot内嵌了tomcat4,不需要配置json解析,支持REST架构5,个性化的配置非常简单如何使用Spring原创 2020-07-28 10:32:47 · 489 阅读 · 0 评论 -
SpringBoot源码分析-自动配置
主入口类import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class WangApplication { public static void main(String[] args) { SpringApplication.run(原创 2020-11-18 15:23:56 · 216 阅读 · 0 评论 -
Spring Boot的配置文件
配置文件的加载位置:file:./config/file:./classpath:/config/classpath:/Spring Boot启动会扫描以上位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件,优先级从高到底,高优先级会覆盖低优先级的内容。其中Resources文件为classpath,即类路径。文件名的根路径是file。还可以通过spring.config.location来改变配置位置。自动配置原创 2020-07-31 16:36:13 · 175 阅读 · 0 评论 -
Spring Boot项目出现问题: Whitelabel Error Page
Spring Boot项目出现问题:Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Tue Jun 07 11:39:11 CST 2022原创 2022-06-07 11:46:32 · 762 阅读 · 0 评论 -
SpringBoot的邮件任务
邮件发送,在我们的日常开发中,也非常的多,Springboot也帮我们做了支持邮件发送需要引入spring-boot-start-mailSpringBoot 自动配置MailSenderAutoConfiguration定义MailProperties内容,配置在application.yml中自动装配JavaMailSender测试邮件发送原创 2020-11-30 14:59:02 · 196 阅读 · 0 评论 -
SpringBoot高级应用----整合缓存(Redis)
JSR-107、Spring缓存抽象、整合RedisSpringBoot整合----缓存一、JSR-107二、缓存抽象?三、环境搭建1.创建数据库2.导入依赖3.配置文件4. 整合Mybatis编写bean,mapper,service,controller5. 开启基于注解的缓存6. 标注注解缓存四、缓存的工作原理1. 自动配置类CacheAutoConfiguration一、JSR-107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManage原创 2020-11-24 17:21:23 · 546 阅读 · 0 评论 -
SpringBoot整合MybatisPlus
Mybatis-plus官方网站SpringBoot整合MybatisPlus一,MybatisPlus比Mybatis的优势一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一,MybatisPlus比Mybatis的优势摘自Mybatis-Plus和Mybatis的区别Mybatis-Plus是一个Mybatis的增强工具,它在Mybatis的基础上做了增强,却不做改变。我们在使用Mybatis-Plus之后既可以使用Mybatis-Plus的特有功能,又能够正常使用Mybatis原创 2020-12-01 16:38:36 · 271 阅读 · 0 评论 -
SpringBoot整合Mybatis----两种方式xml版与注解版
SpringBoot整合Mybatis一、引入依赖二、配置文件三.创建数据库对应的类四,创建持久层与对应的xml数据操作文件1,持久层接口2.持久层对应的xml文件五,服务层1,UserService接口2,UserServiceImpl六,测试总结一、引入依赖 <!--jdbc--> <dependency> <groupId>org.springframework.boot</groupId&g原创 2020-11-17 11:40:21 · 445 阅读 · 1 评论 -
SpringBoot的异步任务处理
异步(async)是相对于同步(sync)而言的,很好理解。同步就是一件事一件事的执行。只有前一个任务执行完毕,才能执行后一个任务。这里利用SpringBoot对异步任务进行简单应用。原创 2020-11-30 13:42:16 · 376 阅读 · 0 评论 -
SpringBoot整合---检索(ElasticSearch)---未完成
SpringBoot与检索前言一、Linux环境下安装ElasticSearch?前言我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的首选。他可以快速的存储、搜索和分析海量数据。SpringBoot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持;Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding原创 2020-11-30 13:13:02 · 173 阅读 · 0 评论 -
SpringBoot的定时任务
利用注解方式测试SpringBoot的定时任务原创 2020-11-30 14:08:43 · 193 阅读 · 0 评论 -
SpringMVC的拦截器过滤器简单实例
SpringMVC实现过滤器与拦截器原创 2023-06-29 19:50:49 · 625 阅读 · 0 评论 -
SpringMVC 获取请求数据的注解 @RequestBody与实体类RequestEntity 的基本用法
在 Servlet 中有格HttpServletRequest 的方法可以使使我们可以轻松获取请求数据, 包括请求头、请求体。而在 SpringMVC 中一方面可以利用 Servlet 的 API 来获取请求数据;另一方面也提供了注解和实体类的方式来更加方便的获取。话不多说,直接上代码。其中,前端代码为 themleaf 引擎构造出来,分别构造出两个输入用户数据的文本框,在后端进行分别测试 @RequestBody 与RequestEntity<!DOCTYPE html><htm原创 2021-11-17 22:05:18 · 2070 阅读 · 0 评论 -
SpringMVC常用注解
①RequestParam把请求中指定名称的参数给控制器的形参赋值属性:value:请求参数中的名称required:请求参数是否必须提供此参数,默认为true②RequestBody用于获得请求体的内容。转换成key=value&key=value格式get方法不适用属性:required:是否必须有请求体,默认是ture。③PathVaribale用于绑定url的...原创 2020-05-02 11:22:32 · 129 阅读 · 0 评论 -
SpringMVC前后端数据交互
前端到后端1、占位符原始方式:/deleteUser?id=1rest方式:/deleteUser/1SpringMVC路径中的占位符常用于RESTful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参<a th:href="@{/testRest/1/admin}">测试路径中的占位符--&g原创 2021-11-05 23:06:48 · 814 阅读 · 0 评论 -
SpringMVC 的视图--转发与重定向
转发与重定向的区别转发是实际上是服务器内部的一次请求,重定向是客户端的两次请求。基本表现为转发时候浏览器地址不会发生改变,而重定向会改变。由此导致对应 Request 域来说,转发能够在内共享数据,而重定向则不能。当然,转发只能跳转服务器内部的URL指令,重定向能够跳转服务器外部URL。两者各有用途,本文主要简单罗列在 Spring MVC 中的基本使用。直接将 Spring MVC 的转发与重定向代码复制如下:@Controller@RequestMapping("/testView")pub原创 2021-11-07 22:45:31 · 791 阅读 · 0 评论 -
Spring MVC工作流程
1,启动服务器,加载一些配置文件DisapatcherServlet对象创建springmvc.xml被加载HelloController创建成对象2,发送请求,后台处理1、浏览器发送请求,被 DispatherServlet 捕获,该 Servlet 并不处理请求,而是把请求转发出去。转发的路径是根据请求 URL,匹配@RequestMapping 中的内容。2、匹配到了后,执行对应方法。该方法有一个返回值。3、根据方法的返回值,借助 InternalResourceViewResolve原创 2020-07-24 10:37:56 · 162 阅读 · 0 评论 -
Spring MVC
Spring MVC是什么?它是一种基于Java实现MVC设计模型的请求驱动型的轻量级Web框架,可以使用Spring中的Spring MVC框架。从上图可以看出,spring MVC是表现层的框架,主要可以与浏览器进行交互的作用,功能可以通过MVC来看出:M:model模型,JavaBean一般用于封装数据V:view视图, JSP一般用于展示数据C:controler控制器,s...原创 2020-05-01 14:30:07 · 256 阅读 · 0 评论 -
Spring+Quartz的定时器使用
Spring+Quartz的定时器使用原创 2023-06-08 19:37:06 · 492 阅读 · 0 评论 -
jdbc不能使用占位符代表表名及其解决方法
jdbc不能使用占位符代表表名的解决方法原创 2022-08-16 10:01:44 · 1641 阅读 · 0 评论 -
JdbcTemplate原理
JdbcTemplate源码原理与问题原创 2022-06-20 11:20:53 · 309 阅读 · 0 评论 -
Spring——IOC基本原理
IOC的作用:如下图所示,我们在创建对象的时候利用new 创建一个实例,这是一种主动的方法,但是对象之间相互依赖,导致我们在一个实例发生变化需要对依赖他的对象进行修改,这样对象之间的耦合性大大提高,因此可以通过工厂的方法+反射来解决这个问题。如下图所示,我们将创建对象的权限交给工厂,这样能够大大减小程序之间的耦合。Ioc实现的基本原理(模拟):首先我们需要理解Bean的概念, Bean是对象的工厂,Bean在计算机英语中有可重用组件的意思,JavaBean是用Java语言编写的可重用组件,java原创 2020-08-07 15:55:56 · 224 阅读 · 0 评论 -
Spring Bean--加载过程,作用范围和生命周期
摘自图文并茂,揭秘 Spring 的 Bean 的加载过程在这之前首先了解一下Spring Bean的加载API接口BeanFactory与Application的区别BeanFactory 才是 Spring 容器中的顶层接口。ApplicationContext 是它的子接口。BeanFactory 和 ApplicationContext 的区别:创建对象的时间点不一样。ApplicationContext:他采用的是立即加载的策略,只要一读取配置文件,默认情况下就会创建对象。Bean原创 2020-07-23 22:08:47 · 470 阅读 · 0 评论 -
Spring Security入门案例
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。安全包括两个主要操作。“认证”,主题一般式指用户,设备或可以在你系 统中执行动作的其他系,通俗说是登陆。统。“授权”,权限管理。快速入门案例:配置步骤:①,导入依赖<dependencies><dependency><groupId>org.springframework.security</groupId>&l原创 2020-05-15 23:38:10 · 203 阅读 · 0 评论 -
spring出现java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut pt1问题解决方法
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userService’ defined in fi...原创 2020-04-29 13:06:30 · 740 阅读 · 0 评论