![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring系列核心知识
文章平均质量分 82
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,本栏目将讲解全套Spring体系知识,非常值得学习,现在特惠价29.9元,火热🔥订阅中。活动结束后马上涨价,早买不会亏,投资自己学习性价比最高
Lansonli
CSDN大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
Spring Boot(九):Spring Boot整合FreeMarker
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。原创 2023-02-09 10:59:02 · 1926 阅读 · 10 评论 -
Spring Boot(八):Spring Boot整合Druid和整合JSP
Druid是由阿里巴巴推出的数据库连接池。它结合了C3P0、DBCP、PROXOOL等数据库连接池的优点。之所以从众多数据库连接池中脱颖而出,还有一个重要的原因就是它包含控制台,很方便的帮助我们实现对于sql执行的监控。停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活。本文由 Lansonli 原创,首发于 CSDN博客。原创 2023-02-08 17:55:30 · 786 阅读 · 6 评论 -
Spring Boot(七):Spring Boot整合Logback和PageHelper
内部流程是ThreadLocal中设置了分页参数(pageIndex,pageSize),之后在查询执行的时候,获取当线程中的分页参数,执行查询的时候通过拦截器在sql语句中添加分页参数,之后实现分页查询,查询结束后在 finally 语句中清除ThreadLocal中的查询参数。在Spring Boot项目中我们不需要额外的添加Logback的依赖,因为在spring-boot-starter或者spring-boot-starter-web中已经包含了Logback的依赖。Service层代码编写。原创 2023-02-07 23:28:30 · 949 阅读 · 8 评论 -
Spring Boot(六):Spring Boot整合Mybatis案例
如果不在SpringBoot02Application启动类上添加@MapperScan必须在UserMapper接口上添加@Mapper注解。在resource下新建mybatis文件夹,mapper.xml文件名没有要求了,不需要和接口名完全对应了,是根据namespace去找接口。在启动类上添加注解,表示mapper接口所在位置。定义mapper.xml映射文件。但是最好还是和接口名字保持一致。controller层代码。定义mapper接口。service层代码。原创 2023-02-06 23:35:57 · 1140 阅读 · 14 评论 -
Spring Boot(五):Spring Boot项目配置详解
一种是 bootstrap,另外一种是 application(ServletContext),bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。注意:这里的每一个都代表一个层级。原创 2023-02-05 23:57:14 · 1777 阅读 · 18 评论 -
Spring Boot(四):Spring Boot启动原理分析
将配置类@SpringBootApplication标注的类所在包及下面所有子包里的所有组件扫描到spring容器。点击@SpringBootApplication,再点击@EnableAutoConfiguration进入类文件。这些自动配置类给我们当前项目的场景提供了一些组件和配置,有了自动配置就免除类手动编写配置文件,注入等等功能。这里管理着springboot中所有依赖的版本,是一个版本控制中心,导入依赖如果不写版本就用这里的版本。该jar包提供一系列的配置类,替换掉了我们的XML配置信息。原创 2023-02-05 06:00:00 · 14303 阅读 · 94 评论 -
Spring Boot(三):第二种导入依赖方式的实战案例(常用)
在公司中可能会出现必须继承某个项目,如果Spring Boot用了继承就不能继承别的项目了。原创 2023-02-04 06:00:00 · 1401 阅读 · 39 评论 -
Spring Boot(二):第一种导入依赖方式的实战案例
启动类在启动时会做注解扫描(@Controller、@Service、@Repository......),扫描位置为同包或者子包下的注解,所以启动类的位置应放于包的根下。在com.lanson下新建自定义名称的类(规范:XXXXApplication),可以是项目上下文路径Application。Spring Boot的启动类的作用是启动Spring Boot项目,是基于Main方法来运行的。项目上下文路径默认 '' 其实就是没有。开发一个Controller。启动类表示项目的启动入口。原创 2023-02-03 14:48:22 · 1147 阅读 · 5 评论 -
Spring Boot(一):SpringBoot详细介绍
在环境搭建时,需要分析要导入哪些库的坐标,而且还需要 分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。当然了,启动器中自动配置无法实现所有内容的自动配置,在使用Spring Boot时还需要进行少量的配置(这个配置不是在xml中了,而是在properties或yml中即可)。自动配置 -Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。原创 2023-02-02 17:21:48 · 721 阅读 · 4 评论 -
SpringMVC(十五):SpringMVC其他注解说明
作用:指定当前发送请求的方式只可以是post请求属性:和@RequestMapping中属性一致作用:指定当前发送请求的方式只可以是get请求属性:和@RequestMapping中属性一致。原创 2023-02-02 06:30:00 · 478 阅读 · 2 评论 -
SpringMVC(十四):SpringMVC异常处理
系统中异常包括两类:预期异常(检查型异常)和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息, 后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理,如下图:二、异常处理具体实现1、使用@ExceptionHandler注解处理异常缺点:只能处理当前Controller中的异常。原创 2023-02-01 16:35:33 · 1597 阅读 · 4 评论 -
SpringMVC(十三):SpringMVC拦截器介绍使用
过滤器的作用是保护请求的服务器资源,在请求资源被执行之前,如果请求地址符合拦截范围,则会先执行过滤器。那么,如果我们仍然使用过滤器来完成请求的拦截,因为过滤器是在Servlet之前执行的,就会造成,过滤器会拦截DispatcherServlet所有的请求。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去 进行处理,则返回 true。拦截器可以获取IOC容器中的各个bean,而过滤器就不太方便,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。原创 2023-01-31 14:41:22 · 1769 阅读 · 3 评论 -
SpringMVC(十二):SpringMVC文件下载
展示所有玩家信息,包括图片展示。文件的上传是将用户本地的资源发送到服务器,让服务器存储到其硬盘中的过程。而下载和上传正好是相反的过程。下载是用户发起请求,请求要下载的资源。服务器根据请求,将其硬盘中的文件资源发送给浏览器的过程。用户通过浏览器发起下载请求,服务器在接收到请求后,根据当前请求的用户信息,去数据库中获取当前用户要下载的资源的文件路径,然后服务器再去其硬盘中读取对应的文件,将文件响应给浏览器,基于此过程,下载请求的请求数据为:简单的下载:文件的路径直接作为一个字段存储在用户信息表中用户的ID。原创 2023-01-25 18:35:39 · 938 阅读 · 2 评论 -
SpringMVC(十一):SpringMVC文件上传中要解决的问题
在实际开发中,我们会有很多处理不同功能的服务器。(注意:此处说的不是服务器集群)总结:分服务器处理的目的是让服务器各司其职,从而提高我们项目的运行效率。放在当前项目下,作为静态资源,这样可以通过URL访问。但是会出现异常,后期可以可以配置一个异常解析器解决。FileUploadController代码。在SpringMVC中配置静态资源放行。后天已经将图片的文件名响应给浏览器。playerController代码。使用UUID对文件名进行重命名。通过文件上传解析组件控制。Service层代码。原创 2023-01-11 15:22:08 · 1357 阅读 · 20 评论 -
SpringMVC(十):SpringMVC上传实例讲解
还有部分的用户希望可以将本地的资源上传服务器存储起来,然后再其他的电脑中可以通过访问网站来获取上传的资源,这样用户就可以打破空间的局限性,再任何时候只要有网有电脑就可以对自己的资源进行操作,比如:云存储,云编辑。传统的请求中,请求数据是以键值对的格式来发送给后台服务器的,但是在上传请求中,没有任何一个键可以描述上次的数据,因为数据本身是非常大的键就相当于一个变量,我们使用一个变量存储一个10g的电影显然是不可能的。上传的文件本身普通数据:用户名,Id,密码等,建议上传功能中不携带除上传资源以外的数据。原创 2023-01-10 23:47:54 · 775 阅读 · 0 评论 -
SpringMVC(九):作用域传参
文章目录作用域传参一、传统方式传递数据二、使用Model传递数据三、使用ModelAndView传递数据PageContext对象request对象 session对象application(ServletContext)对象 定义Controller定义showDataPage.jsp原创 2022-12-05 21:15:19 · 1041 阅读 · 6 评论 -
SpringMVC(八):SSM整合
SSM整合登录案例开发原创 2022-11-30 21:53:15 · 1078 阅读 · 0 评论 -
SpringMVC(七):SpringMVC的响应处理
当请求处理完成后,我们需要将此次请求的处理结果响应给浏览器,以前我们是自己在Servlet中使用response对象来完成响应的,那么在SpringMVC中如何响应请求的处理结果呢?既然我们希望使用单元方法的返回值来响应ajax请求的处理结果,而目前DispatcherServlet的底层会将单元方法的返回值按照请求转发或者重定向来处理,所以就需要我们告诉DispatcherServlet,单元方法的返回值不要按照请求转发或者重定向处理,而是按照直接响应处理,将单元方法的返回值直接响应给浏览器。原创 2022-10-29 23:36:56 · 903 阅读 · 2 评论 -
SpringMVC(六):SpringMVC的常见注解
params(了解):用于指定限制请求参数的条件,它支持简单的表达式。要求请求参数的 key 和 value 必须和 配置的一模一样。请求 URL 的第一级访问目录,此处不写的话,就相当于应用的根目录,写的话需要以/开头。:请求参数中是否必须提供此参数,默认值:true,表示必须提供,如果不提供将报错。value:用于指定请求的 URL,它和 path 属性的作用是一样的。把请求中指定名称的参数给控制器中的形参赋值。method:用于指定请求的方式。:用于指定 url 中占位符名称。:请求参数中的名称。原创 2022-10-28 23:00:20 · 1137 阅读 · 3 评论 -
SpringMVC(五):SpringMVC的获取请求参数
紧耦合方式(了解)DispatcherServlet中的service方法直接将此次请求的request对象传递给调用的单元方法即可。同时在单元方法上声明形参HttpServletRequest来接收request实参即可。解耦合方式(熟练)DispatcherServlet在其service方法中将请求数据根据需求从request对象中获取出来后,将数据直接传递给对应的单元方法使用。同时在单元方法上直接声明对应的形参接收请求数据即可。在单元方法上声明形参来接收请求数据时,形参名必须和请求数据的键名一致,D原创 2022-10-27 16:30:00 · 1020 阅读 · 1 评论 -
SpringMVC(四):SpringMVC的RequestMapping注解
method属性可以控制请求的方式,值为RequestMethod的枚举值。原创 2022-10-19 04:30:00 · 852 阅读 · 10 评论 -
SpringMVC(三):SpringMVC执行流程
它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由 Handler 对具体的用户请求进行处理。原创 2022-10-18 20:26:15 · 861 阅读 · 2 评论 -
SpringMVC(二):SpringMVC项目搭建
创建好目录后,选中目录,右击 mark directory as 选择对应目录类型即可。可以创建一个javaEE项目,然后复制web.xml文件中的内容即可。在resources下添加 springmvc.xml。创建普通Servlet,然后跳转至JSP。修改web.xml 中的版本约束。补充项目结构文件夹并标记文件夹。添加运行的外部Tomcat环境。配置Tomcat启动运行项目。将当前模块放入Tomcat。添加log4j2.xml。原创 2022-10-17 20:09:15 · 829 阅读 · 14 评论 -
SpringMVC(一):SpringMVC的简单介绍
SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。使用Spring可插入的MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2(一般老项目使用)等等。M model 模型层 DAO封装 -- Mybatis。原创 2022-10-14 21:37:11 · 1006 阅读 · 4 评论 -
Spring基础(十七):Spring日志框架和测试支持
在resources目录下准备log4j2.xml的配置文件。导入log4j2依赖。原创 2022-10-13 23:31:10 · 1127 阅读 · 0 评论 -
Spring基础(十六):Spring事务管理注解方式和XML配置方式
保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。无论add是否有事务,都建立一个新的事务,所有的方法都加入到新的事务中,add原来的事务就不用了。如果add方法没有事务,那么就新建一个事务,将addDept和addEmp加入到这个新的事务中。原创 2022-10-13 21:30:51 · 1201 阅读 · 10 评论 -
Spring基础(十五):Spring事务环境搭建
通过张三给李四转账案例演示事务的控制。创建一个根据id修改money的方法。创建一个转账的业务方法。原创 2022-10-01 22:38:21 · 623 阅读 · 2 评论 -
Spring基础(十四):Spring的事务回顾
事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。目前常用的存储引擎有InnoDB(MySQL5.5以后默认的存储引擎)和MyISAM(MySQL5.5之前默认的存储引擎),其中InnoDB支持事务处理机制,而MyISAM不支持。二、原创 2022-09-29 22:18:56 · 638 阅读 · 10 评论 -
Spring基础(十三):JDBCTemplate的批操作
一次连接,操作表格里的多条数据,就是批量操作。原创 2022-09-16 23:49:56 · 592 阅读 · 2 评论 -
Spring基础(十二):JDBCTemplate的使用
JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。按如下项目结构准备 maven jar项目即可。原创 2022-09-15 23:37:48 · 646 阅读 · 4 评论 -
Spring基础(十一):AOP注解和XML方式实现
AspectJ本身并不是spring框架中的组成部分, 是一个独立的AOP框架,一般把AspectJ和Spring框架的AOP依赖一起使用,所以要导入一个独立的依赖。execution([权限修饰符][返回值类型][类的全路径名][方法名](参数 列表) )通过一个表达式来确定AOP要增强的是哪个或者那些方法。开启注解扫描和AOP切面编程自动生成代理对象配置。数字越小,其代理位置越靠近注入位置。2、基于XML配置方式 (了解)1、基于注解方式实现 (熟练)数字越小,优先级越高。原创 2022-09-11 23:09:53 · 664 阅读 · 23 评论 -
Spring基础(十):AOP概念和原理
表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现日志处理,权限控制,性能检测,事务控制等。Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理。原创 2022-09-10 18:49:43 · 830 阅读 · 2 评论 -
Spring基础(九):代理模式介绍
代理模式是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。例如:房产中介代替业主卖房静态代理中代理类与被代理类都需要实现同一个接口,这就说明我们的一个静态代理类只能代理一个类,并且还要事先知道我们要代理哪个类才能写代理类,如果我们有其他类还想使用代理那就必须再写一个代理类。然而在实际开发中我们是可能是有非常多的类是需要被代理的,并且事先我们可能并不知道我们要代理哪个类。所以如果继续使用静态代理反而会增加许多的工作量,并且效率低下,代码复用率也不好。....原创 2022-08-28 09:12:07 · 982 阅读 · 32 评论 -
Spring基础(八):注解方式创建对象IOC
导入依赖 aop@Component 放在类上,用于标记,告诉spring当前类需要由容器实例化bean并放入容器中该注解有三个子注解@Controller 用于实例化controller层bean@Service 用于实例化service层bean@Repository 用于实例化持久层bean当不确定是哪一层,就用Component这几个注解互相混用其实也可以,但是不推荐。...原创 2022-08-27 17:19:23 · 1165 阅读 · 6 评论 -
Spring基础(七):使用外部属性配置文件
spring容器可以读取.properties属性配置文件,可以将文件中的信息注入给bean例如:引入Druid数据源,配置连接池信息。原创 2022-08-26 07:15:12 · 935 阅读 · 6 评论 -
Spring基础(六):Bean自动装配
我们也可以通过自动转配,完成属性的自动注入,就是自动装配,可以简化DI的配置。通过property标签可以手动指定给属性进行注入。原创 2022-08-25 09:17:51 · 691 阅读 · 1 评论 -
Spring基础(五):Bean的生命周期
1、通过构造器创建bean实例 执行构造器2、为bean属性赋值 执行set方法3、初始化bean 调用bean的初始化方法,需要配置指定调用的方法4、bean的获取 容器对象 getBean方法5、容器关闭销毁bean 调用销毁方法,需要配置指定调用的方法。原创 2022-08-24 09:16:27 · 1170 阅读 · 34 评论 -
Spring基础(四):XML方式实现DI
Bean(汉译咖啡豆)又称JAVABean,其实就是JAVA程序程序中的一个个对象,所以Bean的管理其实就是spring对于JAVA程序中的对象的管理。spring中给我们定义好了一个工厂接口,可以生产对象的接口,我们可以通过工厂来获取bean。特点 : bean标签中定义的class类不是返回的对象的类,而是生产该对象的工厂。对象功能的实现往往要依赖属性的值,那么给对象属性赋值就可以说成是依赖注入。DI处理的是对象的属性赋值和互相依赖的关系。IOC处理的是对象如何创建的问题。通过无参构造方法构造对象。原创 2022-08-20 23:48:56 · 760 阅读 · 28 评论 -
Spring基础(三):IOC底层原理
将上面的信息读取进入程序 对象的ID ,一个是对象的类的全路径名。将对象放到一个map集合中。通过字节码实例化对象。原创 2022-08-16 15:27:56 · 769 阅读 · 8 评论 -
Spring基础(二):IOC概念引入
EmpDao接口和实现类接口实现类在spring配置容器中的对象。原创 2022-08-11 11:43:10 · 709 阅读 · 8 评论