![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 73
Been Doing
君子尚拙,以璞为真!
展开
-
Spring AOP 和 AspectJ的区别
Spring AOP 和 AspectJ的区别springAOP 是spring支持的面向切面AOP 编程。AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。1、目标不同springAOP 不是一个完备的AOP 方案。AspectJ是最首创的AOP技术,用来提供全面的AOP方案。2、织入方式AspectJ 使用了三种不同类型的织入方式:Compile-time weaving原创 2022-05-29 16:05:37 · 5482 阅读 · 0 评论 -
注解版的声明式事务
搭建声明式事务的环境是个人都知道,在对数据库进行增删改操作时,必然是要使用到事务的。因此,接下来,我们就来搭建好声明式事务的基本环境。导入相关依赖首先,在项目的pom.xml文件中添加c3p0数据源的依赖,如下所示。 <!--数据源--> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId原创 2022-05-05 15:36:46 · 846 阅读 · 0 评论 -
使用@Profile注解实现开发、测试和生产环境的配置和切换
@Profile注解概述在容器中如果存在同一类型的多个组件,那么可以使用@Profile注解标识要获取的是哪一个bean。也可以说@Profile注解是Spring为我们提供的可以根据当前环境,动态地激活和切换一系列组件的功能。这个功能在不同的环境使用不同的变量的情景下特别有用,例如,开发环境、测试环境、生产环境使用不同的数据源,在不改变代码的情况下,可以使用这个注解来动态地切换要连接的数据库。接下来,我们来看下@Profile注解的源码,如下所示。从其源码中我们可以得出如下三点结论:@Profi原创 2022-05-05 15:17:49 · 884 阅读 · 0 评论 -
初步认识一下BeanDefinitionRegistryPostProcessor
首先,咱们来看一下BeanDefinitionRegistryPostProcessor的源码,如下图所示。从该接口的名字中,我们大概能知道个一二,说它是bean定义注册中心的后置处理器并不过分。而且,从该接口的源码中我们也可以看出,它是BeanFactoryPostProcessor旗下的一个子接口。我们还能看到,它里面定义了一个方法,叫postProcessBeanDefinitionRegistry,那么问题来了,它是什么时候执行的呢?我们可以看一下它上面的详细描述,说的是啥呢,说的是在IOC容原创 2022-05-05 14:26:31 · 2213 阅读 · 0 评论 -
BeanFactoryPostProcessor的调用时机
BeanFactoryPostProcessor的调用时机BeanFactoryPostProcessor其实就是BeanFactory(创建bean的工厂)的后置处理器。说起这个,你脑海中是不是泛起了回忆,是不是想起了有一个与BeanFactoryPostProcessor的名字极其相似的玩意,它就是BeanPostProcessor。那什么是BeanPostProcessor呢?我们之前早就说过了,它就是bean的后置处理器,并且是在bean创建对象初始化前后进行拦截工作的。现在我们要讲解的是Bea原创 2022-05-05 14:04:11 · 1877 阅读 · 0 评论 -
bean的生命周期
六、bean的生命周期https://liayun.blog.csdn.net/article/details/110670961Bean 的初始化和销毁;1、@Bean注解中使用init-method属性和destroy-method属性来指定初始化方法和销毁方法。初始化和销毁方法的时机:你有没有想过这样一个问题,初始化方法和销毁方法是在什么时候被调用的啊?bean对象的初始化方法调用的时机:对象创建完成,如果对象中存在一些属性,并且这些属性也都赋好值之后,那么就会调用bean的初始化方原创 2022-05-02 21:10:13 · 23659 阅读 · 6 评论 -
BeanFactory和FactoryBean的区别
区别:https://liayun.blog.csdn.net/article/details/110391066BeanFactory是个Factory,也就是IOC容器或对象工厂,而FactoryBean就是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,FactoryBean是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。Fac原创 2022-05-02 20:36:40 · 12232 阅读 · 0 评论 -
Import注解
五、Import注解向Spring容器中注册bean1、@Configuration注解结合@Bean注解向Spring容器中注册bean;2、可以按照条件向Spring容器中注册bean;(Conditional)3、可以使用@Import注解向容器中快速导入bean对象;可以在@Import注解中使用ImportBeanDefinitionRegistrar向容器中注册bean。4、向容器中注册Bean,实现FactoryBean<>接口;1、使用@Import注解给容器中快速原创 2022-05-02 20:27:58 · 560 阅读 · 0 评论 -
@Scope注解,@Conditional()注解
@Configurationpublic class MyConfig { /** 需要下载Scope的源码可以看到; * * @since 4.2 * * @see ConfigurableBeanFactory#SCOPE_PROTOTYPE prototype 所实例的 * * @see ConfigurableBeanFactory#SCOPE_SINGLETON singleton 单实例的 *原创 2022-05-02 20:24:29 · 112 阅读 · 0 评论 -
使用@ComponentScan自动扫描组件并指定扫描规则
使用@ComponentScan自动扫描组件并指定扫描规则@Repository、@Service、@Controller、@Component注解的类都会被扫描到,并自动注入到Spring容器中。此时,我们分别创建BookDao、BookService以及BookController这三个类,并在这三个类中分别添加@Repository、@Service、@Controller注解,如下所示。BookDao// 名字默认是类名首字母小写 @Repository public class Book原创 2022-05-02 20:18:47 · 1536 阅读 · 0 评论 -
使用@Configuration 和@Bean给容器中注册组件
一、使用@Configuration 和@Bean给容器中注册组件;1、创建一个Maven工程,导入Spring的依赖<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc&l原创 2022-05-02 20:13:10 · 603 阅读 · 3 评论 -
谈一谈你对Spring的理解;
谈一谈你对Spring的理解;总结:Spring就是一个轻量级的非入侵的控制反转(IOC),面向切面编程(AOP)的框架,同时支持事务的处理。百度脑图:https://naotu.baidu.com/file/5d0bdbb62f437b2045a1f3083a120a63原创 2022-04-27 19:26:17 · 305 阅读 · 0 评论 -
IOC实现原理
前提:必须对于Bean的生命周期有了解。Bena的生命周期图解奉上详细的IOC 实现原理:https://www.pdai.tech/md/spring/spring-x-framework-ioc-source-2.html,到现在我没有搞懂。1、BeanFactoryPostProcessor 可以对Bean的定义进行一些扩展操作。同样的在当前的接口找实现类,PlaceholderConfigurerSupport接口2、AOP的实现原理,Aop的进入点;是在BeanPostProce原创 2022-04-27 10:17:14 · 346 阅读 · 0 评论 -
Spring声明式事务
Spring声明式事务1:回顾事务:把一组事务当成一个事务来做,要么都成功 ,要么失败事务在项目开发中,非常重要,涉及到数据一致的问题,不能马虎; 确保完整性和一致性;事物的ACID原则1.原子性2.一致性3.隔离性(1)多个业务可能操作同一个资源,防止数据损坏4.持有型(1)事务一旦提交,无论系统发生什么问题,结果都不会发生影响,被持有化的写到储存器中;2:声明式事务: AOP包结构:我测试的时候出现的问题:https://blog.csdn.net/weixin_原创 2022-04-11 19:52:16 · 130 阅读 · 0 评论 -
attempted to return null from a method with a primitive return type (int).
错误原因分析本次报错的原因在于sql语句未查询到数据,返回为null。而我们定义的dao层方法是返回为int,就会出现如下这样的提示:return null from a method with a primitive return type (int).(试图从具有原始返回类型(int)的方法返回null)Ingeter是int的包装类,int的初值为0,Ingeter的初值为null解决方式:将dao层的返回类型改为Integer即可。转载:https://blog.csdn.net/ir原创 2022-04-11 18:48:23 · 18992 阅读 · 0 评论 -
Bean的生命周期(初始化)
Bean的生命周期(初始化)一、初始化前----> 初始化----> 初始化后 实现原理UserService —>无参的构造方法—> 对象----> 依赖注入----> 初始化前----> 初始化----> 初始化后 ----> 放入单例池Map ----> BeanAspect包package com.baidu.Aspect;import org.aspectj.lang.annotation.Aspect;import org原创 2022-04-11 14:02:19 · 464 阅读 · 0 评论 -
Spring循环依赖:
三个缓存三个缓存分别有什么作用第一层缓存(singletonObjects):单例对象缓存池,已经实例化并且属性赋值,这里的对象是成熟对象;第二层缓存(earlySingletonObjects):单例对象缓存池,已经实例化但尚未属性赋值,这里的对象是半成品对象;第三层缓存(singletonFactories): 单例工厂的缓存什么是循环依赖总:什么是循环依赖问题,A依赖B,B依赖A分:先说明bean的创建过程:实例化,初始化(填充属性)1、先创建A对象,实例化A对象,此时A对象中的原创 2022-04-10 18:05:32 · 727 阅读 · 0 评论 -
Spring Bean生命周期详解
站在设计者的角度考虑设计IOC容器加载Bean的配置(比如xml配置)比如不同类型资源的加载,解析成生成统一Bean的定义根据Bean的定义加载生成Bean的实例,并放置在Bean容器中比如Bean的依赖注入,Bean的嵌套,Bean存放(缓存)等除了基础Bean外,还有常规针对企业级业务的特别Bean比如国际化Message,事件Event等生成特殊的类结构去支撑对容器中的Bean提供统一的管理和调用比如用工厂模式管理,提供方法根据名字/类的类型等从容器中获取Bea原创 2022-04-10 09:49:58 · 17131 阅读 · 0 评论 -
Spring 声明式事务管理
Spring 声明式事务管理https://blog.csdn.net/q343509740/article/details/80765327原创 2022-03-26 15:55:36 · 647 阅读 · 0 评论 -
Spring整合Mybatis
整合Mybatismybatis-Spring官方文档http://mybatis.org/spring/zh/sqlsession.html#SqlSessionTemplate步骤:1:导入相关的jar包:JunitmyBatis;mysql数据库在这里插入代码片Spring相关的Aop织入myBatis-Spring【new】2:编写配置文件;3:测试回忆MyBatis1:编写实体类@Datapublic class User { private int原创 2022-03-26 11:04:01 · 1236 阅读 · 0 评论 -
AOP面向切面编程
AOP什么是AOPAOP (Aspect Oriented programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性。Aop在Spring中的作用:提供声明式的事务,允许用户自定义切面横切关注点:跨越应用程序多个模块的方法或功能。即是原创 2022-03-26 10:46:29 · 813 阅读 · 0 评论 -
maven资源导出问题
maven资源导出问题网上有很多maven资源导出问题的解决方法,都一样但是,最近使用的时遇到了些问题搜出来的解决方法 <build> <resources> <resource> <directory>src/main/resources</directory> <includes>原创 2022-03-26 09:19:47 · 1026 阅读 · 1 评论 -
静态、动态代理
静态代理代理模式:静态代理;动态代理;学习aop之前 , 我们要先了解一下代理模式!,因为AOP的底层机制就是动态代理!静态代理角色分析:抽象角色: 一般会使用接口或者抽象类来解决真实角色: 被代理的角色代理角色: 代理真实的角色,代理真实角色后,我们一般会做一些附属操作。客户: 访问代理对象的人代码实现:Rent:接口//租房public interface Rent { public void rent();}Host:真实角色//真实角色: 房东,原创 2022-03-25 20:16:16 · 89 阅读 · 0 评论 -
Ioc 配置的三种方式
Ioc 配置的三种方式1:xml 配置顾名思义,就是将bean的信息配置.xml文件里,通过Spring加载文件为我们创建bean。这种方式出现很多早前的SSM项目中,将第三方类库或者一些配置工具类都以这种方式进行配置,主要原因是由于第三方类不支持Spring注解。优点: 可以使用于任何场景,结构清晰,通俗易懂缺点: 配置繁琐,不易维护,枯燥无味,扩展性差举例:1:配置xx.xml文件2:声明命名空间和配置bean<?xml version="1.0" encoding="utf-原创 2022-03-24 21:00:46 · 944 阅读 · 0 评论 -
使用注解开发
使用注解开发在Spring4之后,要使用注解开发,必须保证aop 的包导入@Component : 组件,放在类上,说明这个类被Spring 管理了,就是Bean1:Bean2: 属性如何注入// 等价与: <bean id="user" class="com.kuang.pojo.User"/>//@Component 组件@Componentpublic class User { public String name; //相当于 <p原创 2022-03-24 20:17:14 · 424 阅读 · 0 评论 -
Bean的自动装配
自动装配是Spring满足Bean依赖的一种方式Spring会在上下文中自动寻找,并自动给Bean装配属性;在Spring中有三种装配方式;在XML种显示的配置;在Java中显示配置;隐士的自动装配Bean注解实现自动装配包结构:1:分别创建一个Cat包,Dog包;public class Cat { public void show(){ System.out.println("miao。。"); }}public class Dog {原创 2022-03-24 19:45:53 · 1003 阅读 · 0 评论 -
依赖注入的三种方式
DI(依赖注入)注入的三种方法:构造器方法注入,set注入,基于注解的注入(接口注入)1:构造器方法注入创建一个Address类;public class Address { private String address; public Address() { } public Address(String address) { this.address = address; } public String getAddre原创 2022-03-24 18:51:51 · 19882 阅读 · 2 评论 -
HelloSpring
第一个HelloSpring项目注 : spring 需要导入commons-logging进行日志记录 . 我们利用maven , 他会自动下载对应的依赖项 .<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.10.RELEASE</version&g原创 2022-03-23 22:38:06 · 550 阅读 · 0 评论 -
Spring
1:Spring (Spring框架是由于软件开发的复杂性而创建的)1.1、简介Spring:春天----->给软件行业带来了春天!2002,首次推出了Spring框架的雏形:interface21框架! Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3 月24日发布了1.0正式版。Rod Johnson ,Spring Framework创始人,著名作者。很难想象Rod Johnson的学历,真的 让好多人大吃一惊,他是悉尼大学的博士,然原创 2022-03-23 21:07:30 · 333 阅读 · 0 评论