
Spring
文章平均质量分 55
Spring
Java程序员廖志伟
《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)作者、清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主。研究过Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper、RabbitMQ、RocketMQ、Kafka、Redis、MySQL、ElasticSearch、MongoDB、ShardingSphere、DDD、Kubernetes等技术。
展开
-
【谈谈Indexed注解的作用】
在实际开发中,@Indexed注解可以用于各种不同的场景,例如为Spring Boot应用程序中的RESTful API建立索引、为Java类创建自定义注解等等。总之,通过使用@Indexed注解,我们可以轻松地将某个类或者方法标记为可被索引和搜索的对象,从而实现更加灵活和智能的应用程序。一般情况下,这个注解用于实现自定义的扫描器或者处理器。在这种情况下,我们可以使用@Indexed注解来标记实体类,指示Spring框架将其添加到hibernate搜索引擎的索引中,以便可以进行全文搜索。原创 2023-07-18 12:15:00 · 1090 阅读 · 0 评论 -
【Spring面试全家桶】Spring类型
在上面的示例中,我们创建了一个名为exampleBean的Bean,它的类是ExampleBean,在Spring配置文件中使用scope属性将其作用域设置为prototype,在Java类中使用@Scope注解同样将其作用域设置为prototype。总之,Spring类型转换器是一个非常实用的工具,可以帮助我们在应用程序中轻松地处理各种数据类型的转换。Spring的类型转换服务ConversionService模块提供了一个通用的类型转换框架,可以将不同类型之间的转换任务委托给特定的转换器实现类。原创 2023-06-28 12:15:00 · 105 阅读 · 0 评论 -
【Spring面试全家桶】Spring之@Configuration底层原理详解
生成代理对象后,Spring框架会将该对象注册到IoC容器中。@ConfigurationClassParser类是Spring框架内部的一个类,它用于解析@Configuration注解,扫描其中所有的@Bea注解标记的方法,并为这些方法生成对应的BeanDefinition对象,然后将这些对象注册到IoC容器中。它的主要功能是扫描@Configuration注解所标记的类,并解析其中所有的@Bea注解标记的方法,为这些方法生成对应的BeanDefinition对象,并将这些对象注册到IoC容器中。原创 2023-06-21 11:45:00 · 913 阅读 · 0 评论 -
深入理解Spring、Spring MVC、Spring Boot等开源框架
【Spring Bean的生命周期】【Spring使用三级缓存解决循环依赖的过程】【Spring容器的启动过程】【Spring事务底层实现原理】【Spring IOC容器加载过程】【Spring AOP底层实现原理】【Spring的自动装配】【Spring MVC的工作原理】原创 2023-09-14 21:01:51 · 418 阅读 · 0 评论 -
【Spring MVC的工作原理】
原创 2023-09-14 20:47:33 · 325 阅读 · 0 评论 -
【Spring Boot自动装配】
启动类的@SpringBootApplication注解由@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解组成,三个注解共同完成自动装配;原创 2023-09-14 20:46:45 · 353 阅读 · 0 评论 -
【Spring的自动装配】
使用@Autowired注解自动装配指定的bean,在启动spring IoC时,容器自动加载了一个后置处理器,当容器扫描到@Autowied的时候,就会在IoC容器自动查找需要的bean,并且注入对象的属性,使用@Autowired的时候,首先在容器中查询对应类型的bean,如果查询结果刚好为一个,就将这个bean装配给@Autowired指定的数据,如果查询的结果不止一个,那么@Autowired会根据名称来查找,如果上述查找的结果为空,那么会抛出异常,解决方法可以使用required=false。原创 2023-09-14 20:43:52 · 497 阅读 · 0 评论 -
【Spring AOP底层实现原理】
如果没实现就利用cglib进行AOP动态代理,CGLIB是通过继承的方式做的动态代理,是一个代码生成的类库,可以在运行时动态的生成某个类的子类,将目标对象转变为代理对象对事务进行操作。所以在初始化的时候,已经将目标对象进行代理,放入到spring 容器中。CGLIB是基于ASM开发的一个字节码生成库,通过生成目标类的子类来实现AOP、动态代理等功能。初始化时会看目标类有没有实现InvocationHandler接口或者是Proxy类,如果实现了接口,就使用JDK动态代理,通过反射来接收被代理的类。原创 2023-09-14 20:38:36 · 140 阅读 · 0 评论 -
【Spring IOC容器加载过程】
注册BeanPostProcessor:Spring IOC容器提供了BeanPostProcessor接口,允许。,Spring提供了多种方式,如通过ClassPath、FileSystem等方式进行定位。,此时容器中还没有Bean实例化,只是将Bean定义信息注册到BeanFactory中。,需要注意的是,懒加载的Bean只有在第一次使用时才会初始化。,这些Bean会在容器启动时创建,放入单例Bean缓存池中。注册监听器:在Bean实例化之前,我们可以。容器启动完成:在容器完成以上步骤后,原创 2023-09-14 20:29:58 · 214 阅读 · 0 评论 -
【Spring事务底层实现原理】
当调用这个代理对象的方法时,如果有事务处理,则会先关闭事务的自动功能,然后执行方法的具体业务逻辑,如果业务逻辑没有异常,那么代理逻辑就会直接提交,如果出现任何异常,那么直接进行回滚操作。应用启动时会创建一个代理类,把事务逻辑织入到代理类中,然后用代理类替代目标类,并放入上下文容器中。当实际调用目标类的事务方法时,被代理类拦截,先执行拦截器中的事务逻辑,再执行目标类的业务逻辑,最后处理异常回滚和提交。这样,当执行代理类的方法时,就会先执行事务拦截器中的事务逻辑,再执行目标类的业务逻辑。原创 2023-09-14 20:17:52 · 609 阅读 · 0 评论 -
【Spring容器的启动过程】
使用这个工具类,会先创建一个BeanDefinitionRegistry对象,然后创建一个ClassPathBeanDefinitionScanner对象,并设置它的扫描路径和过滤器。在扫描注解时,Spring会扫描指定包下的类,并将带有指定注解的类封装成BeanDefinition对象。在加载配置文件时,Spring会创建一个BeanFactory工厂,然后使用配置信息填充该工厂的BeanDefinition,根据这些信息创建相关的Bean实例。(13)完成容器的初始化,释放资源等。原创 2023-09-14 19:08:36 · 233 阅读 · 0 评论 -
【Spring使用三级缓存解决循环依赖的过程】
这个时候testSerivce2对象里面发现testService1里面没有赋值,然后对testService1进行赋值,从一级缓存去查看,发现没有,去二级查看,发现没有,去三级查看,发现有,就把testService1从三级缓存添加到二级缓存里面,存放已经在内存空间创建好但是还没有给属性赋值的testService1对象,把testService1三级缓存用来创建提前暴露到bean的对象删除。当Spring创建testService1对象时,它会先从一级缓存中查找是否存在testService1的实例。原创 2023-09-14 15:10:02 · 192 阅读 · 0 评论 -
【Spring Bean的生命周期】
Spring Bean的生命周期分为四个阶段:实例化、属性赋值、初始化和销毁。通过Java类的构造函数实例化Bean,利用Java反射机制,调用bean对应类的构造方法进行实例化。在XML文件中,可以使用标签的class属性指定要实例化的Bean类。当容器启动时,容器会根据class属性的全限定类名使用反射机制实例化Bean。示例代码:在注解方式中,@Component、@Service、@Controller等注解本质上是Java类的元数据,Spring框架在启动时会扫描指定包路径下所有的类,将被标注了原创 2023-09-14 10:37:03 · 325 阅读 · 0 评论 -
【Spring我可以讲半小时】
文章目录Spring Bean的生命周期四个阶段Spring的自动装配Spring使用三级缓存解决循环依赖的过程Spring的事务与AOP实现原理Spring容器启动执行流程Spring Bean的生命周期四个阶段实例化 Instantiation属性赋值 Populate初始化 Initialization销毁 Destruction影响多个Bean的接口有二个,InstantiationAwareBeanPostProcessor作用于实例化阶段的前后,BeanPostProcessor原创 2022-03-02 14:26:26 · 2032 阅读 · 2 评论 -
【Spring容器启动执行流程】
部署一个web应用在web容器中,它会提供一个全局的上下文环境,这个上下文就是ServletContext,它为后面的IoC容器提供宿主环境,当web容器启动的时候,会执行web.xml中的ContextLoaderListener监听器初始化contextInitialized方法,调用父类的initWebApplicationContext方法,这个方法里面执行了三个任务:1.创建WebApplicationContext容器,2.加载context-param中spring配置文件,3.初始化配置文.原创 2022-03-04 07:00:00 · 601 阅读 · 0 评论 -
【Spring的事务与AOP实现原理】
Spring事务属于AOP范畴,它的底层也是需要数据库的支持,初始化时会看目标类有没有实现InvocationHandler接口或者是Proxy类,如果实现了通过反射来接收被代理的类,如果没实现就利用cglib进行AOP动态代理,CGLIB是通过继承的方式做的动态代理,是一个代码生成的类库,可以在运行时动态的生成某个类的子类,将目标对象转变为代理对象对事务进行操作,通过代理对象对数据库的操作来进行事务处理,没有异常就进行事务提交,有异常就进行事务回滚。...原创 2022-03-03 07:30:00 · 1011 阅读 · 3 评论 -
【Spring Bean的生命周期】
Spring Bean的生命周期四个阶段实例化 Instantiation属性赋值 Populate初始化 Initialization销毁 Destruction影响多个Bean的接口有二个,InstantiationAwareBeanPostProcessor作用于实例化阶段的前后,BeanPostProcessor作用于初始化阶段的前后。只调用一次的接口,有Aware类型的接口和生命周期接口二种。aware类型的接口可以分为二组:Aware Group1BeanNameAwa原创 2022-03-02 11:15:27 · 1566 阅读 · 0 评论 -
【Spring使用三级缓存解决循环依赖的过程】
一级缓存存放实例化对象 。二级缓存存放已经在内存空间创建好但是还没有给属性赋值的对象。三级缓存存放对象工厂,用来创建提前暴露到bean的对象。@Servicepublic class TestService1 { @Autowired private TestService2 testService2; public void test1() { }}@Servicepublic class TestService2 { @Autowi.原创 2022-03-01 11:32:28 · 1841 阅读 · 32 评论 -
Spring框架:第二章:IOC依赖注入及40个实验
4、IOC依赖注入4.1、什么是IOC(面试经常问)IOC 全称指的是 Inverse Of Control 控制反转。 控制反转是指将bean对象的创建权力交给spring来操作。在使用Spring以前 。都是通过手动代码new 对象();1.IOC是控制反转,控制反转是指将bean对象的创建交给Spring来管理。并且IOC是Spring框架中提供的一个非常重要的功能。2.IOC容器就...原创 2018-11-30 19:07:01 · 1161 阅读 · 0 评论 -
Spring框架:第三章:对象的生命周期及单例bean生命周期的11个步骤
5.1、IOC之Bean的生命周期实验22:创建带有生命周期方法的beanpublic class Person { private Integer id; private String name; public void init() { System.out.println("这是person对象的初始化方法"); } public void destroy() { ...原创 2018-11-30 20:02:00 · 4888 阅读 · 1 评论 -
Spring框架:第四章:Spring管理数据库连接池
6.1、Spring配置管理数据库连接池对象(重点)导入jar包druid-1.1.9.jarmysql-connector-java-5.1.37-bin.jar配置信息:<!-- 配置数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.Drui原创 2018-12-01 11:02:37 · 702 阅读 · 0 评论 -
Spring框架:第五章:Spring EL表达式
创建java实体Bean对象public class Person { private int id; private String name; private String phone; private double salary; private Car car;public class Car { private String name; private Strin...原创 2018-12-01 14:04:47 · 2496 阅读 · 1 评论 -
Spring框架:第六章:注解功能
8.1、注解配置Dao、Service、Controller组件实验32:通过注解分别创建Dao、Service、Controller★Spring配置bean的常用注解有@Controller 配置web层的组件@Service 配置Service层的组件@Repository 配置Dao层的组件@Component 除了web层、service层、dao层之外的...原创 2018-12-02 11:09:25 · 745 阅读 · 0 评论 -
Spring框架:第七章:AOP切面编程
9.1、什么是AOPAOP是面向切面编程。全称:Aspect Oriented Programming面向切面编程指的是:程序是运行期间,动态地将某段代码插入到原来方法代码的某些位置中。这就叫面向切面编程。使用一个案例来体现AOP底层实现原理9.2、一个简单计算数功能加日记日记工具类public class LogUtils { public static void logB...原创 2018-12-02 11:10:24 · 1124 阅读 · 0 评论 -
Spring框架:第八章:声明式事务
10、声明式事务事务分为声明式和编程式两种:声明式事务:声明式事务是指通过注解的形式对事务的各种特性进行控制和管理。编码式(编程式)事务:指的是通过编码的方式实现事务的声明。11.1、编码方式实现事务:11.2、声明式事务环境搭建11.2.1、准备测试数据库##创建tx数据库drop database if exists `tx`;CREATE database `tx`;#...原创 2018-12-02 11:10:55 · 839 阅读 · 0 评论 -
Spring框架:第九章:Spring整合Web
13、Spring整合Web13.1、在web工程中添加Spring的jar包。Spring的核心包spring-beans-4.0.0.RELEASE.jarspring-context-4.0.0.RELEASE.jarspring-core-4.0.0.RELEASE.jarspring-expression-4.0.0.RELEASE.jaraop包spring-aop-4...原创 2018-12-02 11:11:38 · 825 阅读 · 0 评论 -
Spring框架:第一章:介绍和准备工作
1、Spring概述①Spring是一个开源框架②Spring为简化企业级开发而生,使用Spring开发可以将Bean对象,Dao组件对象,Service组件对象等交给Spring容器来管理,这样使得很多复杂的代码在Spring中开发却变得非常的优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。③Spring是一个IOC(DI)和AOP容器框架。④Spring的优良...原创 2018-11-30 18:11:16 · 921 阅读 · 0 评论