![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring
文章平均质量分 95
Bee.F
这个作者很懒,什么都没留下…
展开
-
Spring Bean的完整生命周期(带流程图,好记)
一、Bean 的完整生命周期在传统的Java应用中,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了。一旦bean不再被使用,则由Java自动进行垃圾回收。相比之下,Spring管理Bean的生命周期就复杂多了,正确理解Bean 的生命周期非常重要,因为Spring对Bean的管理可扩展性非常强,下面展示了一个Bean的构造过程:Bean 的生命周期如上图所示,Bean 的生命周期还是比较复杂的,下面来对上图每一个步骤做文字描述:Spr转载 2022-03-30 09:27:49 · 8467 阅读 · 2 评论 -
Spring Cache - Redis 的使用 自定义缓存配置
Spring Cache官网:https://docs.spring.io/spring-framework/docs/5.2.11.RELEASE/spring-framework-reference/integration.html#cache一、使用1、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte原创 2020-12-13 11:59:00 · 1655 阅读 · 0 评论 -
spring AOP切面的使用
AOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;使用导入aop模块;Spring AOP:(spring-aspects)定义一个业务逻辑类,在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx)定义一个日志切面类:切面类里面的方法需要动态感知目标方法运行到哪里然后执行;前置通知 @Before:在目标方法运行之前运行;后置通知 @After:在目标方法运行结束之后运行(无论方法正常结束还是异常结束);原创 2020-12-09 12:51:55 · 604 阅读 · 0 评论 -
@Profile 根据环境变量注册Bean
@Profile:提供的可以根据当前环境,动态激活和切换一系列组件的功能;开发环境、测试环境、生产环境;数据源:A/B/C;@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件;加了环境标识的bean,只有这个环境被激活的时候才能注册到容器中。默认是default环境;写在配置类上,只有是指定的环境的时候,整个配置类里面的所有配置才能开始生效;没有标注环境标识的bean在,任何环境下都是加载的;根据环境加载数据源配置文件:dbconf原创 2020-12-08 23:36:29 · 159 阅读 · 0 评论 -
自定义组件使用spring底层组件
自定义组件想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory等),需要实现xxxAware;在创建对象的时候,会调用接口规定的方法注入相关组件;把Spring底层一些组件注入到自定义的Bean中;例如:拿到spring的IOC容器,实现ApplicationContextAware接口;获得spring ioc容器给当前Bean设置的名称,实现BeanNameAware接口;获得特殊符号的解析器,实现EmbeddedValueResol原创 2020-12-08 23:26:49 · 213 阅读 · 0 评论 -
spring 依赖注入的三种方式
@Autowired:构造器,参数,方法,属性;都是从容器中获取参数组件的值;1)、set方法注入;2)、构造器注入;3)、作为Bean方法的参数注入;例子:Boss 注入Car类第一种、set方式注入//Car类package com.spring.bean;@Componentpublic class Car { public Car() { System.out.println("car...constructor"); }}//Boss类package com.sp原创 2020-12-07 12:46:01 · 2187 阅读 · 0 评论 -
spring自动装配的3种注解
@Autowired@Qualifier@Primary@Resource@Inject@Autowired 自动装配自动装配:Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;@Autowired:自动注入:1)、默认优先按照类型去容器中找对应的组件,找到就赋值;2)、如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找;3)、@Qualifier(“beanName”):使用@Qualifier指定需要装配的组件的id,而不是原创 2020-12-07 12:20:36 · 4098 阅读 · 0 评论 -
@Value 给属性赋值
@Value:给属性赋值1、基本数值2、可以写SpEL; #{}3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)@Data@AllArgsConstructor //lombok:全部参数的构造方法@NoArgsConstructor //lombok:空构造public class Person { @Value("张三") private String name; @Value("#{20-2}") private int age; @Va原创 2020-12-06 21:56:18 · 1868 阅读 · 0 评论 -
spring 注册组件的4种方式
给容器中注册组件的4种方式包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)[自己写的类]@Bean [导入的第三方包里面的组件]@Import [快速给容器中导入一个组件]1)@Import (要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名2)ImportSelector:返回需要导入的组件的全类名数组;3)ImportBeanDefinitionRegistrar:手动注册bean到容器中详见:@原创 2020-12-06 21:35:27 · 470 阅读 · 0 评论 -
Bean 初始化和销毁的四种回调方法
Bean初始化和销毁的四种回调方法 * 1)、指定初始化和销毁方法; * 通过@Bean指定init-method和destroy-method; * 2)、通过让Bean实现InitializingBean(定义初始化逻辑),DisposableBean(定义销毁逻辑); * 3)、使用JSR250; * @PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法 * @PreDestroy:在容器销毁bean之前通知我们进行清理工作 * 4)、BeanP原创 2020-12-05 21:56:15 · 1130 阅读 · 0 评论 -
BeanPostProcessor 后置处理器
BeanPostProcessor【interface】:bean的后置处理器;在bean初始化前后进行一些处理工作;spring底层大量使用;postProcessBeforeInitialization:在初始化之前工作postProcessAfterInitialization:在初始化之后工作可以作为Bean初始化前后的回调方法;//后置处理器:初始化前后进行处理工作//将后置处理器加入到容器中@Componentpublic class MyBeanPostProces原创 2020-12-05 21:46:50 · 101 阅读 · 0 评论 -
@PostConstruct和@PreDestroy 注解
@PostConstruct和@PreDestroy@PostConstruct和@PreDestroy是JSR250里面的注解;(还有@Resource)JSR250规范:JSR是 Java Specification Requests 的缩写,意思是Java 规范提案。是指向 JCP (Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。(来自百度百科)新增一个原创 2020-12-05 21:40:19 · 1739 阅读 · 0 评论 -
FactoryBean 创建Bean
实现FactoryBean接口,重写getObject、getObjectType方法;Spring 的FactoryBean 大量应用在和第三方框架集成中;//创建Color类public class Color {}//创建一个Spring定义的FactoryBeanpublic class ColorFactoryBean implements FactoryBean<Color> { //返回一个Color对象,这个对象会添加到容器中 @Override publ原创 2020-12-02 23:50:23 · 308 阅读 · 0 评论 -
@Import 导入组件
给容器导入组件时,可以通过注解@Controller/@Service/@Repository/@Component ,然后后进行包扫描,这些都是我们自己写的类;如果是第三方的类,可以通过@Bean的方式导入组件,还可以通过@Import方式导入;@Import 直接导入类@Import({Color.class})容器中就会自动注册这个组件,id默认是全类名测试://Color类@Datapublic class Color {}//配置类@Configuration@Import原创 2020-12-02 23:35:31 · 970 阅读 · 0 评论 -
@Conditional 按条件加载容器
@Conditional@Conditional({Condition}):按条件注册Bean可以加在方法上面,也可以加在类上面;测试用例:如果系统是windows,给容器中注册(“bill”)如果是linux系统,给容器中注册(“linus”)@Data@AllArgsConstructor@NoArgsConstructorpublic class Person { private String name; private int age;}@Bean@Conditio原创 2020-12-01 14:44:32 · 155 阅读 · 0 评论 -
@Lazy 懒加载
@Lazy单实例bean默认在容器启动的时候创建对象;懒加载:容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化;@Lazy@Bean("person")public Person person(){ System.out.println("创建Person对象"); return new Person("lishi",20);}@Testpublic void test02(){ ApplicationContext applicationConte原创 2020-12-01 14:41:22 · 265 阅读 · 0 评论 -
@Scope-设置Bean的作用域
@Scope@Scope:设置Bean的作用域@Configuration public class MainConfig02 { /** * * @Scope:调整作用域 * * prototype:多实例的:ioc容器启动并不会去调用方法创建对象放在容器中。 * * 每次获取的时候才会调用方法创建对象; * * singleton:单实例的(默认值):ioc容器启动会调用方法创建对象放到ioc容器中。 * * 以后原创 2020-12-01 12:11:13 · 255 阅读 · 1 评论 -
@ComponentScan-自动扫描组件
@ComponentScan扫描com.baidu包下面的所有组件@ComponentScan(value="com.baidu")扫描com.baidu下的所有组件,排除@Service注解的组件@ComponentScan(value = "com.baidu", excludeFilters = {@ComponentScan.Filter(type = ANNOTATION,classes = {Service.class})})type = ANNOTATION,按注解原创 2020-12-01 11:58:14 · 822 阅读 · 0 评论 -
Spring事务传播属性和隔离级别
事务的传播属性当事务方法被另一个事务方法调用时, 必须指定事务应该如何传播。例如: 方法可能继续在现有事务中运行, 也可能开启一个新事务, 并在自己的事务中运行;事务的传播行为可以由传播属性指定;Spring 定义了7种类传播行为;传播属性描述REQUIRED(常用)如果有事务在运行,当前的方法就在这个事务内运行,否则,就启动一个新的事务,并在自己的事务内运行,也是sp...原创 2020-02-17 14:50:03 · 89 阅读 · 0 评论 -
Spring Bean的4大作用域
在Spring中,可以在元素的 scope属性里设置bean的作用域,以决定这个bean是单实例的还是多实例的。默认情况下, Spring只为每个在IOC容器里声明的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例:所有后续的getBean() 调用和bean 引用都将返回这个唯一的bean实例。该作用域被称为 singleton,它是所有bean的默认作用域。类型说明...原创 2020-02-17 11:48:40 · 251 阅读 · 0 评论