今天处理了一个问题,J2EE项目依赖了底层平台的功能,平台JAR包中配置了一个Bean,对应的实现类也在该平台JAR包中,由于Bean的配置不是懒加载的,所以在Tomcat容器启动时就会调用该Bean对应实现类中的init方法,但是该方法会对我们的业务产生副作用。现在想屏蔽这种副作用,我们肯定不能要求底层平台去修改代码,去除该Bean。所以考虑采取hack的方法解决。我们在我们的项目目录中新建了一
@Conditional条件装配@Conditional是Spring Framework提供的一个核心功能注解,这个注解的作用是提供自动装配的条件限制,一般我们在用@Configuration,@Bean的时候使用它。也就是我们在自定义Bean的注入的时候,我们可以通过@Condition来对bean的注入增加逻辑判断,符合我们要求的我们才让他自动装配@Conditional 的使用如下注解源码
文章目录夯实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阅读
一、了解注解@SpringBootApplication 注解源码:@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters =
Spring AOP的原理是 JDK 动态代理和CGLIB字节码增强技术,前者需要被代理类实现相应接口,也只有接口中的方法可以被JDK动态代理技术所处理;后者实际上是生成一个子类,来覆盖被代理类,那么父类的final方法就不能代理,因为父类的final方法不能被子类所覆盖。一般而言Spring默认优先使用JDK动态代理技术,只有在被代理类没有实现接口时,才会选择使用CGLIB技术来实现AOP。但是
转载 2024-07-11 14:12:54
72阅读
spring boot启动的时候会创建一个注解配置嵌入式web应用上下文AnnotationConfigEmbeddedWebApplicationContext,在实例化这个ApplicationContext时,首先会先实例化它的父类GenericApplicationContext(在父类的构造方法中初始化一个BeanFactory),然后回到子类的构造方法中初始化注解bean定义阅读器An
在一次项目中发现了一个不正常的现象,弄了半天才弄明白咋回事,当初手贱瞎写,造成的困扰。不多说,来一起看下。 由于业务的需要我定义了一个类,其作用协议传输数据之用。public class Transmission { public void comd1(){ System.out.println("发送命令1"); } public void c
转载 2024-06-11 13:43:15
64阅读
先看一下Spring容器内部是如何协助的,也就是Spring容器、Bean的配置信息、Bean的实现类及应用程序之间的关系,如下图 由上图我们看到,一个Bean从创建到被程序使用经历了四个阶段。本文主要讲解Bean在Spring中的装配。装配方式主要分为如下几种。1. 基于XML的配置 1.1 依赖注入依赖注入分为几种方式:属性注入、构造函数注入、工厂方法注入
1.注册 //存储注册的俄BeanDefinition private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(); //向IoC容器注册解析的BeanDefiniton publ
转载 2024-03-26 17:06:22
131阅读
1.Bean的作用域所有的spring bean默认都是单例。当容器分配一个Bean时,不论是通过装配还是调用容器的getBean()方法,它总是返回Bean的同一个实例。有时候需要每次请求时都获得唯一的Bean实例,那么就需要覆盖Spring默认的单例配置。当在Spring中配置<bean>元素时,可以为bean声明一个作用域。为了让spring在每次请求时都为bean产生一个新的实
转载 2024-02-23 21:13:33
128阅读
方式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阅读
1. ApplicationContext 对象构建时登记 6 个 bean 定义登记时机AnnotationConfigEmbeddedWebApplicationContext.AnnotationConfigEmbeddedWebApplicationContext -> new AnnotatedBeanDefinitionReader(this) -> Ann
转载 2024-09-26 15:13:49
78阅读
学习Java少不了对Object的认知,所有类都会继承它的属性,真正的超类。这一个系列,我会对Object中的几个方法,也就是我们自定义类的时候需要重写的几个方法做一个介绍。下面是这一个系列的主要内容:equals方法hashCode方法toString方法clone方法自定义类时考虑实现Comparable接口本系列内容源于对《Effective Java》中文第二版第8条到第12条的学习记录。
Java常用注解元注解:(元注解是用于定义注解的注解)@Retention:定义注解的存活时间@Document:被注解的内容会被Javadoc工具提取成文档@Target:定义注解用于什么地方@Inherited:作用于父类后,子类会继承父类的注解Java预制基本注解:@Deprecated:标记过时元素@SuppressWaring:阻止警告@Override:子类要重写父类的构造方法@Saf
重载和重写方法重载(overload):必须是同一个类方法名(也可以叫函数)一样参数类型不一样或参数数量不一样方法的重写(override)两同两小一大原则:方法名相同,参数类型相同子类返回类型小于等于父类方法返回类型,子类抛出异常小于等于父类方法抛出异常,子类访问权限大于等于父类方法访问权限。spring的依赖注入spring依赖注入有如下几种方式:①setter方式注入(设值注入)②构造器方式
转载 2024-07-16 13:16:53
64阅读
默认是单例通过注解@Scope("prototype"),将其设置为多例模式参考:曾经面试的时候有面试官问我spring的controller是单例还是多例,结果我傻逼的回答当然是多例,要不然controller类中的非静态变量如何保证是线程安全的,这样想起似乎是对的,但是不知道(主要是我没看过spring的源码,不知道真正的内在意图)为什么spring的controller是单例的。先看看spr
转载 2024-07-03 10:26:21
46阅读
一.依赖解析过程Spring容器的启动过程可分为两个阶段:第一阶段:容器处理配置元数据并建立元数据中存在的Bean定义,容器还会对这些Bean定义验证是否正确。注意:这一阶段Bean并没有被创建,相关的属性也没有被注入。第二阶段:首先容器完成对Bean的创建,然后完成注入工作。 但实际上并不是所有的Bean都被创建。 我们知道,一些Bean的创建实际上触发了一连串其他依赖Bean的创建,而这些依赖
转载 2024-02-19 20:20:01
371阅读
遇到这个问题困扰了我好几天,其实之前刚开始学习SpringBoot与MyBatis整合的时候,也遇到过这个问题。现在是第二次犯这个错误了,然而却不是明知故犯,是慢慢被自己坑进来的。让我们来看一下这个问题吧。可能总结的不是很全面,欢迎各位给我指出来,让解决该类问题的这篇博客变得更加详细起来,帮助更多的学习者解决该类问题,这就是写该博客的初衷。IDEA版本2018.2首先,是IDEA本身的问题,我这个
转载 9月前
101阅读
前言写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点。也比较熟悉,但是这很实用。不扯了,开始~多环境配置在开发应用时,常用部署的应用是多个的,比如:开发、测试、联调、生产等不同的应用环境,这些应用环境都对应不同的配置项,比如swagger一般上在生产时是关闭的;不同环境数据库地址、端口号等都是不尽相同的,要是没有多环境的自由切换,部署起来是很繁琐也容易出错的。maven的多环境配置在没有
转载 2024-07-17 10:13:45
172阅读
 Spring 允许继承 bean 的配置, 被继承的 bean 称为父 bean. 继承这个父 BeanBean 称为子 BeanBean 从父 Bean 中继承配置,包括 Bean的属性配置子 Bean 也可以覆盖从父 Bean 继承过来的配置父 Bean 可以作为配置模板 也可以作为 Bean 实例. 若只想把父Bean 作为模板,可以设置bean的abstract 属性
转载 2024-03-28 16:29:32
281阅读
  • 1
  • 2
  • 3
  • 4
  • 5