• 2024-06-10利用SpringBeanUtil 来获取 IOC 容器中的bean
    有时候在代码中,不希望使用自动注入,而是手动获取Spring容器以及Spring容器中的某个对象1、首先写一个class实现ApplicationContextAware#importorg.springframework.beans.BeansException;importorg.springframework.context.ApplicationContext;importorg.springframework
  • 2024-03-22Spring中getBean的生命周期和整个链路原理
    publicabstractclassAbstractBeanFactoryextendsFactoryBeanRegistrySupportimplementsConfigurableBeanFactory{publicObjectgetBean(Stringname)throwsBeansException{returndoGetBean(name,null,null,false);}protected<T&
  • 2024-02-16通过ApplicationContext.getBean()获取bean实例
    spring获取bean容器管理的实例常用方式有两种。    1.  使用注解注入,@Autowired和@Resource@Autowired推荐使用构造函数的方式注入,可被@RequiredArgsConstructor代替@Resource在接口的实现类有多个的时候使用,指定name=实现类名来注入指定的实现类,但@Autowired+@Qualififier
  • 2023-12-26实现ApplicationContextAware没有生效
    下面这段代码是存在一个spring-boot-starter中,引入到其他项目中,启动后获得不到ApplicationContext,原因是启动类中,没有扫描到对应路径:增加代码:@ComponentScan(value="com.XXX.common.project")代码如下@ServicepublicclassSpringContextHolderimplementsApplicationCont
  • 2023-12-03SpringContextUtil工具类记录
    1.SpringContextUtil工具类记录,可在无法注入Bean的时候选择使用,比如在枚举类中实际上是无法使用被IOC管理的Bean的,除非是通过方法传入,现在提供一个工具类解决这个问题(做记录)。@ComponentpublicclassSpringContextUtilimplementsApplicationContextAware{privatestat
  • 2023-11-17@Autowired 注入为null
     背景写一个SpringBoot程序,把从接口传过来的数据放进队列,用线程将数据读进数据库和redis。在启动类创建了一个全局队列,通过实现runable接口的方式写了一个线程A,在线程中用@Autowird注入service层的对象调用操作数据库的办法。原本打算在启动类通过newThread(newA())
  • 2023-11-02Springboot Cache @Cacheable 类内部调用时不生效,解决办法
    出现问题的原因:Springcache的实现原理是基于AOP的动态代理实现的:即都在方法调用前后去获取方法的名称、参数、返回值,然后根据方法名称、参数生成缓存的key(自定义的key例外),进行缓存。this调用不是代理对象的调用,所以aop失效,注解失效。解决办法就是,我们获取当前Bean,由它来调
  • 2023-10-31spring BeanFactory版本的快速入门
       代码示例:  publicstaticvoidmain(String[]args){//创建一个工厂对象DefaultListableBeanFactorybeanFactory=newDefaultListableBeanFactory();//创建一个读取器(读xml文件)XmlBeanDefinitionReaderreader=newXmlBeanDefinitionRead
  • 2023-10-12SpringBoot获取Bean的工具类
    1、beanName默认是类名首字母小写下面的类:beanName=bean1@ComponentpublicclassBean1{publicStringgetBean1(){return"Bean1";}}修改beanName下面的类:beanName=bean2New@Component("bean2New")publicclassBean2{
  • 2023-08-26执行main方法时调用server层或dao层方法
    因业务需要临时同步一个数据,一开始想着直接写个main方法执行一下同步方法就Ok了,结果在查询的时候直接报空指针错误,一下子就给我干懵逼了,没办法只好先写一个接口调这个方法,然后重新启动项目,然后外部访问执行一下,终于是同步过来了。(同步方法是一直都有的)以上都是个人牢骚,下面是具
  • 2023-08-15Spring解决循环依赖的思路
    近期在准备找一些新的工作机会,在网上看了一些面试常见问题,看看自己是否能比较好的回答。今天的这个问题:Spring如何解决循环依赖。看到网上的各种文章的发布时间,这个题目应该是老面试题了,可能比我的码龄长。有很多结合源码来进行解读的文章,但是大多数,是在描述Spring如何解决循环依赖
  • 2023-08-09给首布局选择项目带出明细内容js控制
    1.通过一个中间的jsp进行json查询传递<%@pageimport="java.util.Map"%><%@pageimport="java.util.ArrayList"%><%@pageimport="java.util.List"%><%@pageimport="com.velcro.workflow.pipe.service.ExtendJspServ
  • 2023-08-01SpringBoot如何获取IOC容器以及修改Bean
    通过ApplicationContextAware来获得ApplicationContext,然后获取相关Bean进行操作举例说明@ConfigurationpublicclassCommonConfigimplementsApplicationContextAware{@OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throw
  • 2023-08-01在非Spring类中获取Spring管理的对象
    在非Spring类中获取Spring管理的对象工具类:packagecom.xxx.task.util;importorg.springframework.context.ApplicationContext;importorg.springframework.context.ApplicationContextAware;importorg.springframework.stereotype.Component;@Componentpublicclass
  • 2023-07-28bean的管理
    一、获取bean1.默认情况下,Spring项目启动时,会把bean都创建好放在IOC容器中,如果想要主动获取这些bean,可以通过以下方式:(1)根据name获取bean:ObjectgetBean(Stringname);(2)根据类型获取bean:<T>TgetBean(Class<T>requiredType);(3)根据name获取bean(带类型转换):<T>TgetBean(String
  • 2023-07-05Spring Boot中Service层依赖注入问题随笔
    问题描述: Controller 层方法为 static 静态,引入 Service 层时使用 @Autowired 注解自动装配,Controller层方法里无法调用Service层,于是加static修饰Service层的注入产生错误:调用Service层进行数据库操作时,注入的Service层报空指针异常( NullPointerException )
  • 2023-07-05Spring中getBean方法的使用方法
    在Spring中,可以使用getBean()方法从容器中获取一个已注册的bean实例。以下是getBean()方法的使用方法:使用ApplicationContext获取bean://创建Spring应用上下文ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");//通过bean的名
  • 2023-06-241、BeanFactory.getBean 总览
    一句话概括本文以走马观花的姿态,简单分析了一波spring容器创建bean的大致环节,后续将通过单独的文章进行细讲其中的没个环节。本文将包含后文的链接,根据感兴趣的内容自取即可。1书接上回我们已经知道了spring是怎么解析标签的。现在我们解析完标签并注册到BeanFactoryReg
  • 2023-06-17springboot中自定义注解在service方法中,aop失效
    问题描述写了个自定义注解,但是该注解只会出现在serviece层中的方法中。启动发现aop未拦截到问题原因:调用service中的xx()方法时,Spring的动态代理帮我们动态生成了一个代理的对象,暂且叫他$XxxxService。所以调用xx()方法实际上是代理对象$XxxxService调用的。但是在xx()方法内调用同
  • 2023-06-03Bean的作用域
    1. singleton  371.1 默认情况下,Spring的IoC容器创建的Bean对象是单例的嘛37来测试一下:packagecom.powernode.spring6.bean;//Bean的作用域37publicclassSpringBean{}Bean的作用域37--><beanid="sb"class="com.powernode.spring6.bean.SpringBean">b
  • 2023-05-04Spring源码:Bean生命周期(三)
    前言在之前的文章中,我们已经对bean的准备工作进行了讲解,包括bean定义和FactoryBean判断等。在这个基础上,我们可以更加深入地理解getBean方法的实现逻辑,并在后续的学习中更好地掌握createBean方法的实现细节。getBean用法讲解getBean方法之前,我们先来看看他有几种常见
  • 2023-04-27bean的生命周期
    bean的生命周期:如下配置:<beanid="personservice"class="com.liyong.ServersBean.PersonServer">在该bean的配置中可以看到这个bean是在spring容器初始化得时候bean被实例化,在此配置中scope="singleton"------------>单例如下配置:<beanid
  • 2023-04-264.Spring中IOC创建对象的两种方式和创建时机
    https://blog.csdn.net/jike11231/article/details/116357864 创建时机1:默认的在Spring容器启动的时候2:在getBean的时候创建对象(就是拿到配置文件中的标识符的时候创建对象)在Spring的配置文件bean中有一个属性lazy-init=“default/true/false”(1)如果lazy-init为"default/f
  • 2023-03-18spring
    1 从容器中拿对象:getBean(Class):按照类型拿bean;getBean(String):按照名字拿bean;getBean(String,Class):按照名字和类型拿;(推荐)2DI依赖注入 3 spring加载过
  • 2023-02-26Spring基于XML文件获取bean
    1.根据id获取beanUseruser=(User)applicationContext.getBean("user");2.根据类型获取beanUseruser=applicationContext.getBean(User.class);3.根据id和类