Java进阶(JavaEE)
文章平均质量分 84
Java企业级技术知识
杰尼龟的知识花园
一定要坚持,因为下次努力不知道要等到什么时候
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot配置热部署Dev-tools
热部署和热加载是在应用正在运行的时候,自动更新(重新加载或者替换class等)应用的一种能力。spring-boot-devtools提供的方案也是要重启的,只是无需手动重启能实现自动加载而已。热部署在服务器运行时重新部署项目它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。热加载在运行时重新加载class,从而升级应用。热加载的实现原理主要依赖类加载器子系统。原创 2024-12-12 20:30:01 · 2361 阅读 · 0 评论 -
SpringBoot配置文件详解
在官网中描述了配置文件的一些常用参数,例如日志logging、spring的应用配置,如应用名称、编码格式、本地资源等的配置文件和的配置文件,以及的配置文件,其参数都是一样的,这些参数实质上都是来自于各种jar包中的一些参数,因此只要依赖的jar包不变,配置文件类型再怎么变都是那么几个参数以application.yml文件作为示例,配置SpringBoot服务启动的端口application.properties文件示例实际项目中更多使用yml文件,原因是application.properties结原创 2024-12-12 20:24:22 · 508 阅读 · 0 评论 -
Spring Initializr模块
在Spring Boot中,BOM是一种特殊的 POM ,用于控制项目依赖项的版本。Spring Initializr是一个基于网络的工具,借助Spring Initializr可以轻松生成SpringBoot项目的结构,并提供了用于创建JVM的项目的可扩展API。在软件世界之外, BOM 是创建产品所需的零件,项目,组件和其他材料的列表。initializr-actuator:它提供有关项目生成的其他信息和统计信息。initializr-generator-test:它提供了用于项目生成的测试基础结构。原创 2024-12-12 20:17:08 · 456 阅读 · 0 评论 -
定制自己的Banner
我们在启动Spring Boot程序时,有如下Banner信息:那么如何自定义成自己项目的名称呢?原创 2024-08-08 21:03:07 · 2461 阅读 · 1 评论 -
第三方jar包对象注入到Bean容器
第三方jar包的对象往往都不会自带@Service、@Component或者其他,但是我们需要让这些对象启动时就注入到Spring容器中,这就需要使用@Bean注解来实现。如果方法的内部需要使用ioc容器中已经存在的Bean对象,只需要在方法中指定入参即可,Spring会自动注入。思考:当配置类多的时候,SpringBoot既然是为了解决项目臃肿问题,是否有更好的方式来优雅的实现。在Spring的启动类上添加@Import注解,可以指定配置类加载到Spring容器中。原创 2024-08-08 20:59:58 · 368 阅读 · 0 评论 -
SpringBoot的基本概念和使用
Spring框架的特点Spring框架降低了组件之间的耦合性;提供了众多服务、事务管理、WS等;支持面向切面编程;对主流框架提供了很好的集成与支持;代码污染极低;Spring的高度可开放性,使得开发者并不强制依赖于Spring,可以自由选择Spring的部分或全部Spring具有众多优点,为什么还要开发SpringBoot?Spring项目组件代码是轻量级,但是配置却是重量级的,从XML慢慢到注解的方式,再从Spring3.0开始引入的Java的配置来代替xml,所有的配置都会带来开发时间的损耗除此之外,项原创 2024-07-15 09:03:24 · 884 阅读 · 0 评论 -
Mybatis详解
类类型的处理器,需要一个能够接受该类的class作为参数的构造器,这样Mybatis会在构造一个类型处理器实例的时候传入一个具体的类。...原创 2024-06-28 18:11:00 · 987 阅读 · 0 评论 -
SpringMVC
MVC是一种软件架构的设计规范,将软件按照、、来划分M:Model,模型层,指工程中的JavaBean[1],作用是处理数据V:View,视图层,指工程中的Html或Jsp等页面,作用是与用户进行交互,展示数据C:Controller,控制层,指工程中的Servlet,作用是接收请求和响应浏览器MVC的工作流程:用户通过View层发送请求到服务器,在服务器中请求被Controller层接收,Controller层调用响应的Model层处理,处理完毕后将结果返回到Controller层,Controller层原创 2024-06-18 15:37:37 · 1233 阅读 · 0 评论 -
SpringMVC的DispatcherServlet处理请求的过程
我们以上个demo中这个GET请求为例,请求URL是http://localhost:8080/011_spring_framework_demo_springmvc_war_exploded/user。然后执行invokeHandlerMethod这个方法,用来对RequestMapping(usercontroller中的list方法)进行处理。我们知道servlet处理get请求是doGet方法,所以我们去找DispatcherServlet类结构中的doGet方法。执行后获得视图和Model。原创 2024-06-18 15:37:11 · 472 阅读 · 0 评论 -
SpringMVC的DispatcherServlet初始化过程
DispatcherServlet作为一个Servlet,需要根据Servlet规范使用Java配置或web.xml声明和映射。DispatcherServlet会根据Spring的配置来发现请求映射、视图解析、异常处理等所需的委托组件。原创 2024-06-18 15:33:25 · 1648 阅读 · 0 评论 -
SpringMVC的一个DEMO
主要引入Spring-webmvc包(spring-webmvc包中已经包含了Spring Core Container相关的包),以及Servlet和jstl(JSP中使用的jstl)的包。springmvc.xml创建后,在web.xml中配置初始化参数。在resouce目录下创建springmvc.xml。添加Tomcat Server-Local。配置Configurations。然后就可以运行并访问Web页面了。点击编辑,编辑war包信息。xml配置文件的编写。原创 2024-06-18 14:01:45 · 755 阅读 · 0 评论 -
Spring5新功能
Spring WebFlux是用于对标SpringMVC的,用于Web开发的响应式编程框架新的Spring-webflux模块,一个基于(反应流)的,完全的异步非阻塞,目的是在使用enent-loop(事件循环机制)执行模型和传统的线程池模型,支持在NettyUndertow和Servlet3.1以上容器等服务器上运行同步和异步:异步和同步针对调用者同步:调用者发送请求,如果等着对方回应,才去做其他事情就是同步异步:调用者发送请求,在等待对方回应的同时在做其他的事情就是异步。原创 2024-06-18 13:50:08 · 794 阅读 · 0 评论 -
Spring的使用场景
如果使用Spring,需要获得一个包含你所需要的Spring模块的jar库的副本。可以是直接的(例如,我的应用程序在运行时依赖于Spring)或间接的(例如我的应用程序依赖于commons-dbcp ,而commons-dbcp 又依赖于commons-pool)。Spring Framework还为Enterprise JavaBeans提供了一个访问和抽象层,使您能够重用现有的POJO,并将其包装在无状态会话bean中,以便在可能需要声明式安全性的, 可扩展的,故障安全的Web应用程序中使用。原创 2024-06-18 13:41:59 · 990 阅读 · 0 评论 -
Spring的事务操作
事务是数据库操作的最基础单元,参考典型场景:转账业务A→B转账100,A-100&&B+100,两者同时满足则完成转账操作,两者相互依赖,如果只有一个满足/不满足则是bug,因此这种业务必须以事务来控制。原创 2024-06-17 17:40:10 · 914 阅读 · 1 评论 -
Spring-AOP概述
在Spring中可以使用Schema和@AspectJ方式进行组织实现。原创 2024-06-17 17:26:42 · 804 阅读 · 0 评论 -
JDK代理实现AOP
第一步:(把冰箱门打开)准备工作,将所有方法包装成ProxyMethod对象,包括Object类中hashCode、equals、toString方法,以及被代理的接口中的方法。代理的创建比较简单,调用getProxy方法,然后直接调用JDK中Proxy.newProxyInstance()方法将classloader和被代理的接口方法传入即可。执行的时候,通过ProxyGenerator创建的Proxy,调用InvocationHandler的invoke方法,执行我们自定义的invoke方法。原创 2024-06-17 17:24:55 · 470 阅读 · 0 评论 -
Cglib代理实现
CgLib是一个强大的、高性能的代码生成包,被许多AOP框架所使用,为他们提供方法的拦截最底层的是字节码ASM是操作字节码的工具CgLib基于ASM字节码工具操作字节码(即动态生成代理,对方法进行增强)SpringAOP基于CgLib进行封装,实现CgLib方式的动态代理。原创 2024-06-17 17:23:12 · 695 阅读 · 0 评论 -
AOP切面的实现原理【底层源码】
AOP是基于IOC的Bean加载来实现的,将切面类的所有切面方法根据使用的注解,并将Advice连同切入点匹配器和切面类等信息一并封装到Advisor,为后续交给代理增强实现做准备。原创 2024-06-17 17:09:25 · 1231 阅读 · 0 评论 -
Spring IOC详解
什么是Bean。原创 2024-06-14 10:03:19 · 1082 阅读 · 0 评论 -
Spring针对Bean管理中属性注入提供注解
Autowired:根据属性类型进行自动装配(getType)@Qualifier:根据属性名称进行注入@Resource:可以根据类型(getType)自动装配,也可以根据名称(getName)自动装配@Value:普通类型属性的注入常见的结构方式如下如何进行属性注入:在Controller类上添加bean实例注解@Controller在service类上添加bean实例注解@Service就必须实现接口,否则会报错注意:不要将注解添加在接口上。原创 2024-06-14 10:02:19 · 351 阅读 · 0 评论 -
Spring针对Bean管理中创建对象提供注解
如果value属性不写,value值默认为当前类的类名首字母小写,例如:UserService=>userService。上述四个注解功能一致,底层都是@Component,都是用于创建bean的实例,只是习惯上用于区分不同层次架构。@Controller:用于创建Controller层bean实例。在创建对象的注解中的value属性对应bean标签中的id属性。@Service:用于创建Service层bean实例。@Repository:用于创建Dao层bean实例。创建类,在类上添加创建对象的注解。原创 2024-06-14 09:58:34 · 190 阅读 · 0 评论 -
引入外部属性文件
在jdbc.properties文件中,不能使用userName/username这种属性,会自动获取当前电脑用户名,导致mysql连接不上。添加外部配置文件jdbc.properties。将外部属性文件中的属性赋值给bean实例对象。在spring的xml配置文件中增加。以引入外部数据库配置文件为例。如果是自定义的,可以自定义类。原创 2024-06-14 09:32:39 · 338 阅读 · 0 评论 -
Spring配置文件中的常用标签
即可在bean标签中去掉property标签,直接使用如下方式(对比set注入中的userDao的注入)原创 2024-06-14 09:30:38 · 519 阅读 · 0 评论 -
IOC操作Bean管理
DI:依赖注入,使用依赖注入用于管理Bean之间的依赖关系,不仅可以注入基本数据类型的属性,还可以注入引用数据类型的属性。注意:这也是为什么使用注解的方式必须所有需要注入的类都必须实现get/set方法的原因。在Spring配置文件中,使用bean标签,标签里添加对应的属性,就可以实现对象创建。创建对象时,默认是执行无参构造方法完成对象创建,如果当前对象没有无参构造会报错。依赖注入的两种方式(官网),实际上有三种。name:可以加特殊符号的对象唯一标识。基于xml方式注入属性。id:对象的唯一标识。原创 2024-06-14 09:28:55 · 853 阅读 · 0 评论 -
什么是Bean
Bean是在Spring中对于对象的描述,原因是每一个实例对象都可以通过xml配置文件中的bean标签来创建,由beans标签来管理所有的bean对象,因此也说Spring是管理bean的容器。通过学习IOC初始化流程,我们知道Spring通过资源配置文件,BeanDefinition并注册到IOC容器中。原创 2024-06-14 09:21:07 · 843 阅读 · 0 评论 -
IOC的依赖注入原理
Autowired注解是Spring自带的,@Resource是JSR250规范实现的,是JDK8的原生注解(在JDK11中已经移除了),@Inject是JSR330规范实现的@Autowired和@Inject注解用法是一样的,不同的是@Inject没有required属性@Autowired和@Inject注解是默认按照类型匹配的,@Resource是按照名称匹配的。原创 2024-06-14 09:14:46 · 884 阅读 · 0 评论 -
IOC的初始化流程
基本的策略是把工厂放到已知的地方,最好是放在对预期使用的上下文有意义的地方,以及代码将实际需要访问工厂的地方。Spring IOC容器对Bean定义资源的载入是从refresh()方法开始的,refresh()是一个模版方法,refresh()方法的作用是:在创建IOC容器前,如果已经有容器存在,则需要把已有的容器销毁和关闭,以保证在refresh之后使用的是新创建的IOC容器,refresh的作用类似于对IOC容器的重启,在新建号的容器中对容器进行初始化,对Bean定义资源进行载入。原创 2024-06-14 09:03:48 · 908 阅读 · 0 评论 -
Spring5的基本使用
Spring5.x支持JetBrains Kotlin语言,而且新增了对函数式Bean定义的支持,包括函数式的Bean检索样式。Spring5.x引入了@Nullable和@NotNull注解来修饰可空的参数及返回值,避免运行时的空指针异常。Spring5.x已经自带了通用的日志封装,不需要再额外使用commons-loging.jar包。由于Java8的反射增强,因此Spring5.x可以对方法的参数进行更高效的访问。Spring5.x核心接口已经加入了Java8接口支持的默认方法。原创 2024-06-13 17:57:08 · 721 阅读 · 0 评论 -
Spring的基本概念
Spring框架是一个开源轻量级的J2EE框架轻量级:引入的jar包非常少开源:免费的源代码框架:用于解决企业应用开发的复杂性Spring的特性非侵入式:使用Spring Framework开发应用程序时,Spring对应用程序本身的结构影响非常小,对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化,使得开发应用程序时结构清晰、简洁优雅DI:依赖注入,指依赖的对象不再需要手动调用setXX方法来设置,而是用过配置赋值。原创 2024-06-13 17:52:28 · 1068 阅读 · 0 评论 -
JavaEE的三层架构MVC
持久层:用于与数据库这种可以将数据持久保存的程序做交互,完成数据的CRUD,将持久层与数据库交互后的结果反馈给服务层,服务层处理完相应的业务后,反馈给控制层,控制层就会根据实际需求将获取到的结果回传给客户端或浏览器。业务层:用于处理业务,通过控制层获取请求参数后传递给业务层,业务层执行完对应的业务后传递数据给控制层,再由控制层反馈给客户端。控制层:也称作Web层或视图层,用于获取浏览器请求,并反馈响应信息的一层。为lib目录创建依赖,成为jar依赖目录。web目录下创建lib目录。方法一:Maven配置。原创 2024-06-13 17:49:03 · 1285 阅读 · 0 评论 -
文件上传下载
我们可以根据用户上传的图片,下载到服务器本地,再通过请求重定向的方式,进行下载–请求重定向就必须将被重定向的Servlet设置为Get请求。将输入流的文件信息copy给输出流:将ServletContext对象中的输入流获取的文件信息,复制到输出流中,通过输出流反馈给浏览器。很明显:当我们使用Servlet获取name=upload的内容时,获取的只是文件名,通过浏览器我们不难发现,上传的只是一个文件名。获取输出流:获取Response对象的输出流–因为需要Response将文件通过流的方式输出给浏览器。原创 2024-06-13 17:42:56 · 1219 阅读 · 0 评论 -
URL和URI
URL是Internet上描述信息资源的字符串,主要用于各种www客户程序和服务器程序上,用统一的格式描述各种信息资源(如:文件、服务器地址、目录等)事实上上面的举例也是URL,URL和URI的区分实际上是确定该资源有无访问机制,如果有,则是URL,无则URI。URI通常由三个部分组成:资源的命名机制、存放资源的主机名、资源自身的名称(这三个条件是充分不必要条件)web上每一种可用资源(如:HTML文档、图像、视频片段、程序等)都是由一个URI进行标识的。资源(指定了一个确定的资源)原创 2024-06-13 17:35:25 · 517 阅读 · 0 评论 -
会话跟踪技术
会话:用户打开浏览器,访问Web服务器的资源,会话建立,直到有一方断开连接,会话结束,在一次会话中可以包含多个请求和响应。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据HTTP协议是无状态的,每次浏览器向服务器发起请求时,服务器都会将该请求视为新的请求,因此需要会话跟踪技术来实现会话共享cookie的信息是以键值对的方式进行保存的客户端有了cookie后,每次请求都会发给服务器每个cookie的大小不能超过4KB。原创 2024-06-13 17:34:08 · 434 阅读 · 0 评论 -
HTTP协议
服务器和客户端相互通信所遵守的规则遵守HTTP协议发送的数据称作报文客户端给服务器发送数据—请求(GET请求和POST请求)服务器给客户端发送数据—响应HTTP协议是无状态的,会将每次浏览器的请求,视为一次新的请求。这样设计的原因是由于,如果每次请求都将记录上一次请求的信息,则多次请求后,会携带大量的数据,导致浏览器访问很慢。原创 2024-06-12 09:24:37 · 860 阅读 · 0 评论 -
JavaWeb-Filter过滤器
创建一个类,继承javax.servlet.Filter接口重写init、destory、doFilter方法@Override@Override@OverridedoFilter方法是用于拦截请求的核心方法在doFilter方法中处理拦截逻辑@Override//没有登录,则跳转到login.jsp}else{//这段代码表示让程序继续向下访问用户的目标资源在web.xml文件中配置filter映射。原创 2024-06-12 09:17:27 · 970 阅读 · 0 评论 -
JavaWeb--Listener监听器
Listener监听器是JavaWeb三大组件之一,JavaWeb的三大组件为:Servlet、Filter、ListenerLIstener监听器是JavaEE的一个接口–规范监听器的作用是为了监听某种事务的变化、然后通过回调函数反馈给客户做一些相应的处理。原创 2024-06-12 09:11:51 · 931 阅读 · 0 评论 -
Servlet详解
是javaEE的规范之一,规范接口Servlet是JavaWeb三大组件之一Servlet是运行在Web服务器中的Java小程序,可以接收客户端发送过来的请求,并响应数据给客户端。原创 2024-06-12 09:09:38 · 1058 阅读 · 0 评论 -
JavaEE的分层模型
Servlet在2.5版本及之前都是采用的xml配置的方式,在3.0之后就是注解的方式实现了 Servlet在4.x中提供了异步请求、注解、增强的Servlet API、非阻塞IO。html\htm网页,通过直接获取的方式,进行页面展示,所有的用户看到的都是同一个页面 css、js、txt mp4 jpg等都算是静态web资源。WebLogic:是Oracle公司的产品,目前应用最广泛的Web服务器,支持JavaEE规范,适合大型项目(收费,大公司用得比较多)原创 2024-06-12 08:50:40 · 971 阅读 · 0 评论 -
请求响应的封装成对象
请求重定向无法访问WEB-INF目录下的资源(原因:两次请求都是由客户端获取链接后发送的请求,浏览器请求无法访问WEB-INF目录下的资源,而请求转发是服务器获取WEB-INF目录下的资源后回传给客户端的)请求重定向:是指客户端给服务器发送请求,服务器回传数据给客户端时,修改浏览器访问地址,重新定向到另一个资源点。在开发中使用绝对路径,避免使用相对路径,避免因项目迁移导致的路径错误,如果要使用相对路径,要使用。请求转发:由客户端发起请求给服务器,服务器从一个资源跳转到另一个资源的操作叫做请求转发。原创 2024-06-12 08:55:27 · 1082 阅读 · 0 评论 -
JDBC的使用步骤
下载Jar包JDBC的使用必须提供第三方的jar包,且Mysql和mysql-connection版本要对应可参考该文档:https://blog.youkuaiyun.com/hchhan/article/details/81106992建议是找到mysql对应版本的mysql-connection提供两个下载jar包的地址:清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/Connector-J/maven库:https:原创 2021-09-11 11:33:39 · 125 阅读 · 0 评论
分享