1. ApplicationContext 对象构建时登记 6 个 bean 定义登记时机AnnotationConfigEmbeddedWebApplicationContext.AnnotationConfigEmbeddedWebApplicationContext
-> new AnnotatedBeanDefinitionReader(this)
-> Ann
转载
2024-09-26 15:13:49
78阅读
文章目录夯实Spring系列|第十一章:Spring Bean 作用域本章说明1.项目环境2.Spring Bean 作用域3."singleton" Bean作用域4."prototype" Bean作用域4.1 依赖查找示例4.2 依赖注入示例4.3 注意事项4.4 增加销毁生命周期5."request" Bean作用域5.1 示例6."session" Bean作用域7."applicat
转载
2024-06-12 15:17:16
84阅读
今天处理了一个问题,J2EE项目依赖了底层平台的功能,平台JAR包中配置了一个Bean,对应的实现类也在该平台JAR包中,由于Bean的配置不是懒加载的,所以在Tomcat容器启动时就会调用该Bean对应实现类中的init方法,但是该方法会对我们的业务产生副作用。现在想屏蔽这种副作用,我们肯定不能要求底层平台去修改代码,去除该Bean。所以考虑采取hack的方法解决。我们在我们的项目目录中新建了一
转载
2024-06-21 19:26:42
89阅读
@Conditional条件装配@Conditional是Spring Framework提供的一个核心功能注解,这个注解的作用是提供自动装配的条件限制,一般我们在用@Configuration,@Bean的时候使用它。也就是我们在自定义Bean的注入的时候,我们可以通过@Condition来对bean的注入增加逻辑判断,符合我们要求的我们才让他自动装配@Conditional 的使用如下注解源码
转载
2024-04-12 12:23:37
48阅读
1.Bean的作用域所有的spring bean默认都是单例。当容器分配一个Bean时,不论是通过装配还是调用容器的getBean()方法,它总是返回Bean的同一个实例。有时候需要每次请求时都获得唯一的Bean实例,那么就需要覆盖Spring默认的单例配置。当在Spring中配置<bean>元素时,可以为bean声明一个作用域。为了让spring在每次请求时都为bean产生一个新的实
转载
2024-02-23 21:13:33
128阅读
1.注册
//存储注册的俄BeanDefinition
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>();
//向IoC容器注册解析的BeanDefiniton
publ
转载
2024-03-26 17:06:22
131阅读
spring boot启动的时候会创建一个注解配置嵌入式web应用上下文AnnotationConfigEmbeddedWebApplicationContext,在实例化这个ApplicationContext时,首先会先实例化它的父类GenericApplicationContext(在父类的构造方法中初始化一个BeanFactory),然后回到子类的构造方法中初始化注解bean定义阅读器An
Spring AOP的原理是 JDK 动态代理和CGLIB字节码增强技术,前者需要被代理类实现相应接口,也只有接口中的方法可以被JDK动态代理技术所处理;后者实际上是生成一个子类,来覆盖被代理类,那么父类的final方法就不能代理,因为父类的final方法不能被子类所覆盖。一般而言Spring默认优先使用JDK动态代理技术,只有在被代理类没有实现接口时,才会选择使用CGLIB技术来实现AOP。但是
转载
2024-07-11 14:12:54
72阅读
一、了解注解@SpringBootApplication
注解源码:@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters =
转载
2024-09-27 18:16:27
96阅读
什么是依赖注入呢?也可以称为控制反转,简单的来说,一般完成稍微复杂的业务逻辑,可能需要多个类,会出现有些类要引用其他类的实例,也可以称为依赖其他类。传统的方法就是直接引用那个类对象作为自己的一个属性,但如果我们每次创建这个类的对象时,都会创建依赖的类的对象,还有如果那个类将来可能不用了,还需要到这个类去删除这个对象,那破坏了代码的复用性和导致高度耦合!依赖注入的出现可以很好地解决这个问题,依赖注入
转载
2024-03-19 20:00:54
167阅读
在一次项目中发现了一个不正常的现象,弄了半天才弄明白咋回事,当初手贱瞎写,造成的困扰。不多说,来一起看下。 由于业务的需要我定义了一个类,其作用协议传输数据之用。public class Transmission {
public void comd1(){
System.out.println("发送命令1");
}
public void c
转载
2024-06-11 13:43:15
64阅读
遇到这个问题困扰了我好几天,其实之前刚开始学习SpringBoot与MyBatis整合的时候,也遇到过这个问题。现在是第二次犯这个错误了,然而却不是明知故犯,是慢慢被自己坑进来的。让我们来看一下这个问题吧。可能总结的不是很全面,欢迎各位给我指出来,让解决该类问题的这篇博客变得更加详细起来,帮助更多的学习者解决该类问题,这就是写该博客的初衷。IDEA版本2018.2首先,是IDEA本身的问题,我这个
先看一下Spring容器内部是如何协助的,也就是Spring容器、Bean的配置信息、Bean的实现类及应用程序之间的关系,如下图 由上图我们看到,一个Bean从创建到被程序使用经历了四个阶段。本文主要讲解Bean在Spring中的装配。装配方式主要分为如下几种。1. 基于XML的配置 1.1 依赖注入依赖注入分为几种方式:属性注入、构造函数注入、工厂方法注入
转载
2024-04-17 11:47:37
76阅读
方式1利用maven-maven-resources-plugin插件不同环境替换占位application.ymlapplication-dev.ymlapplication-pro.ymlapplication-test.ymlapplication.yml配置spring:
profiles:
active: ${spring.profiles.active}pom依赖<!
转载
2024-04-25 19:48:38
118阅读
Bean在Spring家族中有着非常重要的作用,都会用到,所以这篇笔记主要就是关于Bean的自动配置和JavaConfig配置的学习内容。
内容声明bean构造器注入和Setter方法注入装配Bean控制bean的创建和销毁关键词装配(wiring)组件扫描(component scanning)自动装配(AutoWiring)2.1 Spring配置的
转载
2024-04-16 10:55:25
293阅读
学习Java少不了对Object的认知,所有类都会继承它的属性,真正的超类。这一个系列,我会对Object中的几个方法,也就是我们自定义类的时候需要重写的几个方法做一个介绍。下面是这一个系列的主要内容:equals方法hashCode方法toString方法clone方法自定义类时考虑实现Comparable接口本系列内容源于对《Effective Java》中文第二版第8条到第12条的学习记录。
重载和重写方法重载(overload):必须是同一个类方法名(也可以叫函数)一样参数类型不一样或参数数量不一样方法的重写(override)两同两小一大原则:方法名相同,参数类型相同子类返回类型小于等于父类方法返回类型,子类抛出异常小于等于父类方法抛出异常,子类访问权限大于等于父类方法访问权限。spring的依赖注入spring依赖注入有如下几种方式:①setter方式注入(设值注入)②构造器方式
转载
2024-07-16 13:16:53
64阅读
Java常用注解元注解:(元注解是用于定义注解的注解)@Retention:定义注解的存活时间@Document:被注解的内容会被Javadoc工具提取成文档@Target:定义注解用于什么地方@Inherited:作用于父类后,子类会继承父类的注解Java预制基本注解:@Deprecated:标记过时元素@SuppressWaring:阻止警告@Override:子类要重写父类的构造方法@Saf
默认是单例通过注解@Scope("prototype"),将其设置为多例模式参考:曾经面试的时候有面试官问我spring的controller是单例还是多例,结果我傻逼的回答当然是多例,要不然controller类中的非静态变量如何保证是线程安全的,这样想起似乎是对的,但是不知道(主要是我没看过spring的源码,不知道真正的内在意图)为什么spring的controller是单例的。先看看spr
转载
2024-07-03 10:26:21
46阅读
在本文中,我将讨论棘手的Spring Boot bean定义覆盖机制。为了使您对该主题更加清楚,让我们从小测验开始。请看下一个简单的例子。因此,我们有2种配置,它们使用名称beanName实例化bean,在主应用程序中,我们仅打印该bean的值(非常重要的是,它们都具有相同的名称)。那么您认为将要打印什么?示例1@SpringBootApplication
public class Applica
转载
2024-03-19 15:02:04
101阅读