- 博客(48)
- 收藏
- 关注
原创 使用jdk11运行javafx程序和jdk11打包jre包含javafx模块
使用jdk11运行javafx程序和jdk11打包jre包含javafx模块
2024-07-09 18:40:51 734
原创 vue从入门到精通(四):el和data的两种写法
el:用于指定当前Vue实例为哪个容器服务,值通常为css选样器字符串data:用于存储数据,数据供el所指定的容器去使用
2024-05-20 00:09:39 259
原创 夯实spring(二十一):@Scope、@DependsOn、@ImportResource、@Lazy
@Scope、@DependsOn、@ImportResource、@Lazy都是比较常用的,一文带你搞懂他们
2024-05-13 10:20:47 889
原创 springboot的Converter和HttpMessageConveter
详细解析springboot的Converter和HttpMessageConveter
2024-03-12 23:00:26 984
原创 spring-mvc(1):Hello World
虽然目前大多数都是使用springboot来开发java程序,或者使用其来为其他端提供接口,而为其他端提供接口,这些功能都是依靠springmvc实现的,所以有必要学习一下spring-mvc,这样才能更好的学习springboot。
2024-01-11 10:26:34 1067
原创 javax.servlet 和 jakarta.servlet的关系和使用tomcat部署 jakarta.servlet
javax.servlet 和 jakarta.servlet的关系和使用tomcat部署 jakarta.servlet
2024-01-11 10:21:09 13954
原创 springboot实现桌面聊天程序(二):项目搭建--客户端与服务器通信
我们的聊天程序服务器使用springboot和使用netty进行通讯。客户端使用javafx和netty。服务器项目和客户端的项目分别搭建两个项目: cc_chat_server和cc_chat.
2023-10-27 00:02:54 226
原创 夯实spring(二十):@Conditional注解详解
这个注解只有一个value参数,Condition类型的数组,Condition是一个接口,表示一个条件判断,内部有个方法matches返回true或false,当所有Condition都成立的时候,@Conditional的结果才成立,所以是逻辑与的关系。配置类解析阶段:这个过程就是处理配置类上面6中注解的过程,此过程中又会发现很多新的配置类,比如@Import导入的一批新的类刚好也符合配置类,而被@CompontentScan扫描到的一些类刚好也是配置类;是按照@Order的,不是按照编写顺序的。
2023-09-15 17:47:20 117
原创 夯实spring(十八): @ComponentScan、@ComponentScans注解详解
ComponentScan用于批量注册bean,spring会按照这个注解的配置,递归扫描指定包中的所有类,将满足条件的类批量注册到spring容器中可以通过value、basePackages、basePackageClasses 这几个参数来配置包的扫描范围可以通过useDefaultFilters、includeFilters、excludeFilters这几个参数来配置类的过滤器,被过滤器处理之后剩下的类会被注册到容器中。
2023-08-31 18:22:51 147
原创 夯实spring(十七): @Configration、@Bean注解详解
Configuration注解修饰的类,会被spring通过cglib做增强处理,通过cglib会生成一个代理对象,代理会拦截所有被@Bean注解修饰的方法,可以确保一些bean是单例的不管@Bean所在的类上是否有@Configuration注解,都可以将@Bean修饰的方法作为一个bean注册到spring容器中。
2023-08-29 12:27:58 489
原创 夯实spring(十六):详解java注解
jdk中注解相关的类和接口都定义在java.lang.annotation包中。public @interface 注解名称{[public] 参数类型 参数名称1() [default 参数默认值];[public] 参数类型 参数名称2() [default 参数默认值];[public] 参数类型 参数名称n() [default 参数默认值];访问修饰符必须为public,不写默认为public。
2023-08-23 21:43:18 52
原创 夯实spring(十五):java动态代理与CGLIB代理
spring中用到代理的很多,比如上篇文章中的lookup-method和replaced-method,以及后面要学的aop、spring中的事务、spring中解析@configuration注解等等,这些都是依靠代理来实现的,所以现在来把代理学一下。
2023-08-21 21:39:05 85
原创 夯实spring(十四):lookup-method和replaced-method怎么使用
MethodReplacer接口/***当调用目标对象需要被替换的方法的时候,这个调用请求会被转发到这里的替换者的reimplement方法进行处理。* @param obj 被替换方法的目标对象* @param method 目标对象的方法* @param args 方法的参数*/servie2的方法替换者@OverrideSystem.out.println("我是Service2MethodReplacer");@Override。
2023-08-17 22:50:53 292
原创 夯实spring(十三):abstract & parent 是干什么的
上面多了一个base的bean,这个bean没有指定class对象,但是多了一个abstract=”true”的属性,表示这个bean是抽象的,abstract为true的bean在spring容器中不会被创建,只是会将其当做bean定义的模板,而b和c的定义中多了一个属性parent,用来指定当前bean的父bean名称,此处是base,此时b和c会继承base中定义的配置信息。上面的BeanB和BeanC的属性是一样的。上面的b配置覆盖了父bean中的配置信息。我们修改上面的bean.xml。
2023-08-16 17:22:46 73 1
原创 夯实spring(十二):bean延迟初始化
延迟初始化的bean无法在程序启动过程中迅速发现bean定义的问题,第一次获取的时候可能耗时会比较长。
2023-08-15 17:58:59 180 1
原创 夯实spring(十一):autowire-candidate
setterBean的autowire设置的是byType,即按setter方法的参数类型自动注入,SetterBean的setService的类型是Service,而Service类有2个实现类:ServiceImpl1和ServiceImpl2,而容器容器中刚好有这2个实现类的bean:impl1和impl2,所以上面代码会报错,不知道注入的时候选择那个对象注入。当从容器中按照类型查找一个bean对象的时候,容器中却找到了多个匹配的bean,此时spring不知道如何选择了,就会报这个异常。
2023-08-12 10:31:51 115 1
原创 夯实spring(十):primary的使用和作用
当我们需要一个bean,但是spring容器帮我们找到了两个或多个时怎么办?当希望从容器中获取到一个bean对象的时候,容器中却找到了多个匹配的bean,出现这样的情况时会出现什么问题又怎么解决?
2023-08-10 15:32:22 116 1
原创 夯实spring(九):bean的创建和销毁的顺序和depends-on
那么如果xml中定义的bean特别多,而有些bean之间也没有强依赖关系,此时如果想去调整bean的创建和销毁的顺序,得去调整xml中bean的定义顺序,或者去加强依赖,这样是非常不好的,spring中可以通过depend-on来解决这些问题,在不调整bean的定义顺序和强加依赖的情况下,可以通过通过depend-on属性来设置当前bean的依赖于哪些bean,那么可以保证depend-on指定的bean在当前bean之前先创建好,销毁的时候在当前bean之后进行销毁。搞个测试类,看看创建和销毁的顺序。
2023-08-09 15:51:15 158 1
原创 夯实spring(八):spring依赖注入--自动注入
bean.xml的根元素为beans,注意根元素有个default-autowire属性,这个属性可选值有(no|byName|byType|constructor|default),这个属性可以批量设置当前文件中所有bean的自动注入的方式,bean元素中如果省略了autowire属性,那么会取default-autowire的值作为其autowire的值,而每个bean元素还可以单独设置自己的autowire覆盖default-autowire的配置。
2023-08-08 10:37:28 98 1
原创 夯实spring(七):spring依赖注入--手动注入
本文主要讲解了xml中bean的依赖注入,都是采用硬编码的方式进行注入的,这种是手动的方式注入普通类型通过value属性或者value元素设置注入的值;注入对象如果是容器的其他bean的时候,需要使用ref属性或者ref元素或者内置bean元素的方式还介绍了其他几种类型List、Set、Map、数组、Properties类型的注入,后面将介绍spring为我们提供的自动注入。
2023-08-04 18:08:23 115 1
原创 夯实spring(六):Scope--bean的作用域详解
实现Scope接口/*** 返回当前作用域中name对应的bean对象* name:需要检索的bean的名称* objectFactory:如果name对应的bean在当前作用域中没有找到,那么可以调用这个ObjectFactory来创建这个对象/*** 将name对应的bean从当前作用域中移除/*** 用于注册销毁回调,如果想要销毁相应的对象,则由Spring容器注册相应的销毁回调,而由自定义作用域选择是不是要销毁相应的对象/**
2023-08-03 10:30:34 358
原创 夯实spring(五):容器创建bean实例的方式
我们学过了BeanFactory接口,BeanFactory是spring容器的顶层接口,而这里要说的FactoryBean,也是一个接口,这两个接口很容易搞混淆,FactoryBean可以让spring容器通过这个接口的实现来创建我们需要的bean对象。spring容器以factory-bean的值为bean名称查找对应的bean对象,然后调用该对象中factory-method属性值指定的方法,将这个方法返回的对象作为当前bean对象放在容器中供使用。value:指定参数的值。创建Room的静态工厂。
2023-08-01 18:06:17 95 1
原创 夯实spring(四): bean在xml中定义详解
这篇来学习:前面我们说过bean就是spring容器管理的对象,我们程序中使用到的bean都会交给spring容器创建和管理。那spring容器怎么知道我们需要那些对象或bean呢?我们可以通过bean.xml配置文件告诉spring容器需要管理哪些bean,spring帮我们创建和组装好这些bean对象;那么我们如何从spring中获取想要的bean对象呢?我们需要给bean定义一个名称,spring内部将这些名称和具体的bean对象进行绑定,然后spring容器可以通过这个的名称找对我们需要的对象,这个
2023-07-31 17:07:14 152
原创 夯实spring(三): 容器的基本使用和原理
spring内部提供了很多表示spring容器的接口和对象,我们来看看比较常见的几个容器接口和具体的实现类。
2023-07-31 17:06:37 57
原创 夯实spring(二):认识 IOC 和 AOP
IOC(控制反转) 和 AOP(面向切面编程) 和 DI(依赖注入) 是spring的三个核心。这篇文章让我们来认识一下它们到底是什么。
2023-07-31 17:05:54 72
原创 夯实spring(0):学习使用到环境
整个夯实spring系列使用版本5.x.x.RELEASE,这里面会有大量案例,通过maven来构建项目,让你轻松学习。
2023-07-31 17:04:24 43 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人