Spring-Bean创建获取注入
文章平均质量分 80
Spring-Bean注入
OkidoGreen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
@Qualifier高级应用---按类别批量依赖注入(QualifierAnnotationAutowireCandidateResolver原理详解)
本文介绍@Qualifier高级应用场景和案例,通过结合对此注解的使用,应该说是能给你打开了一个新的视角去看待@Qualifier,甚至看待Spring的依赖注入,这对后续的理解、自定义扩展/使用还是蛮有意义的。转载 2024-04-19 14:46:14 · 399 阅读 · 0 评论 -
[Spring] @Bean 修饰方法时如何注入参数
(4-1)@Bean 注解的方法,其返回值就是一个 <bean> 对象,并且注册到了 IOC。转载 2024-04-17 10:05:04 · 2077 阅读 · 0 评论 -
Spring IoC 依赖注入-resolveDependency
目录resolveDependency 是 Spring 进行依赖查找的核心 API。弄明白了 resolveDependency,基本上依赖注入的问题也就搞明白了一半。resolveDependency 本质是根据类型查找依赖,调用 beanFactory#beanNamesForType 方法根据类型查找依赖名称。认知一下,与依赖查找的相关 API:resolveDependency:支持 Optional、延迟注入、懒加载注入、正常注入。转载 2022-12-16 15:51:09 · 1208 阅读 · 0 评论 -
Spring本地启动Main函数-AnnotationConfigApplicationContext
spring转载 2022-04-05 17:32:53 · 1338 阅读 · 0 评论 -
Spring之@Value详解,利用SPEL注入List
先上答案,注入逗号分隔的字符串@Value("#{'${server.name}'.split(',')}")${…}用法{}里面的内容必须符合SpEL表达式,详细的语法,以后可以专门开新的文章介绍, 通过@Value(“${spelDefault.value}”)可以获取属性文件中对应的值,但是如果属性文件中没有这个属性,则会报错。可以通过赋予默认值解决这个问题,如@Value("${spelDefault.value:127.0.0.1}")详细代码如下:// 如果属性文件没有s.转载 2022-01-10 17:22:44 · 3767 阅读 · 0 评论 -
Spring的@Bean只能放在@Configuration里面吗?
首先来看几个问题:- 1.@Bean方法只能定义在@Configuration里面吗?- 2.@Bean方法定义在@Configuration里面和定义在@Component里面有啥区别?- 3.@Bean方法可以是private static的吗?- 4.@Bean方法啥时候必须得定义成static的?先说一下答案:只要是@Component注解修饰的类里面都可以定义@Bean,并且都可以注册到Spring容器里面。其实不仅仅是@Component,只要是被@Component修饰的注原创 2020-08-19 17:09:54 · 3064 阅读 · 1 评论 -
spring中@Bean是可以单独使用的,不配合@Configuration等使用会有什么风险或缺陷?
作者:奔跑中的程序猿链接:https://www.zhihu.com/question/360254920/answer/1661909687来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。明确回答你有陷阱,下面我们以例子来说明:不使用@Configuration注解测试public class Car {}public class Person { public Person(Car car) { System.out.pri.转载 2021-12-16 17:19:09 · 2888 阅读 · 1 评论 -
使用ImportBeanDefinitionRegistrar动态创建自定义Bean到Spring中【Mybatis-注册Mapper相关】
注:spring自身的扫描中添加了includeFilter,仅将包含@Component注解的Class注册成Bean,但在Mybatis的mapper扫描中,mybatis使用的ClassPathMapperScanner未设置默认状态,所以无需Class上有 @Component等注解即可注册成Bean这也是为什么 mapper 有时候不需要加@Repository注解也可以注册成Bean的原因参考:https://zhuanlan.zhihu.com/p/91461558简介Im转载 2021-02-25 18:00:49 · 1188 阅读 · 1 评论 -
从源码分析@Qualifier,@Primary,@Priority的候选顺序
注解分析@Qualifier和@Primary都是属于spring框架下的注解,@Priority属于javax.annotation,JSR250规范。@Primary官方文档的大概意思是,如果在自动注入的多个候选bean中,有一个primary bean的话,那么这个bean就会是自动注入的目标bean。可以作用在类和方法上@Qualifier官方的大概意思是,自动注入的时候,使用了这个注解,那么在候选bean中,就会用这个注解指定的那个bean。作用在字段,方法,类,参数,注解上。@P转载 2020-12-04 14:42:47 · 1848 阅读 · 0 评论 -
Spring bean中的id和name是否可以重复
同名bean:多个bean 有相同的 name 或者 id,称之为同名beanbean 的id 和 name的区别id和name都是spring 容器中中bean 的唯一标识符。id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号或者分号或者空格隔开。如果没有id,则name的第一个名称默认是idspring 容器如何处理同名bean?同一个转载 2020-12-04 14:16:52 · 3846 阅读 · 2 评论 -
Spring ObjectProvider使用说明
说明: 在看HttpMessageConverter部分内容的时候,看到了ObjectProvider。是在这HttpMessageConvertersAutoConfiguration HttpMessageConverters 2个类中引入这个的。在网上找了2篇文章。感觉写的不错,就全文摘抄了(主要是方便后面看到其他内容,方便在里面加内容)。参考: https://www.cnblogs.com/secbro/p/11974729.html https://www....转载 2020-12-04 13:33:59 · 4670 阅读 · 1 评论 -
@Bean @Configuration @Component区别
https://blog.csdn.net/long476964/article/details/80626930https://blog.csdn.net/isea533/article/details/78072133区别就是 cglib代理调用方法时重写成从spring上下文获取bean,可以保证单利。component就是new 个新对象原创 2020-10-11 10:30:24 · 709 阅读 · 0 评论 -
spring中的FactoryBean与ObjectFactory的区别
一、接口定义:public interface FactoryBean<T> { //获取对象的工厂方法 @Nullable T getObject() throws Exception; //对象类型 @Nullable Class<?> getObjectType(); //是否是单例,这个属性决定了spring是否基于缓存来将它维护成一个单例对象。 default boolean isSingleton().转载 2020-10-07 21:53:51 · 1077 阅读 · 0 评论 -
Spring杂谈 | 什么是ObjectFactory?什么是ObjectProvider【解决构造函数注入可能会发生的异常情况】?
ObjectFactory接口定义// 一个对象工厂public interface ObjectFactory<T> { // 返回一个对象 T getObject() throws BeansException;}这个接口的定义非常简单,就是一个对象工厂,定义了一个返回对象的工厂方法。回顾我们直接介绍过的一个内容FactroyBean,其接口定义如下:public interface FactoryBean<T> { @Nulla转载 2020-10-07 21:51:28 · 1082 阅读 · 0 评论 -
Spring构造注入不需要加@Autowired?
@RestController@RequestMapping("/test")public class TestController {private final TestService testService;// @Autowiredpublic TestController(TestService testService) { this.testService = testService;}@RequestMapping("/sayHello")public Strin.转载 2020-10-03 09:45:49 · 10184 阅读 · 10 评论 -
深度分析Spring中的构造器注入
1. 示例先来看一个例子,看看什么是构造器注入。这里我写了一个类,分别有两个构造器,一个是注入一个Bean的构造器,一个是注入两个Bean的构造器:public class ConstructorAutowiredTest { private User user; private Role role; public ConstructorAutowiredTest() { } public ConstructorAutowiredTest(User转载 2020-10-02 15:57:44 · 2025 阅读 · 0 评论 -
@Bean注解修饰带参数方法时,参数取值
结论:如果参数中的实例只有一个(按type),则不需要加任何注解即可注入(感觉和构造函数注入的方式雷同,唯一bean的话就不需要再使用注解标示了);如果在spring上下文中有多个,则需求增加@Qualifier注解 /** * 声明队列交换机等 * @param connectionFactory * @return */ @Bean public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {转载 2020-10-02 15:15:56 · 5168 阅读 · 2 评论 -
从Spring Bean创建流程中看三级缓存解决循环依赖
一、Spring Bean创建流程及缓存总述Spring Bean的创建流程,大致调用栈绘图如下。首先,doGetBean()查询缓存,一二三级缓存全部查询,如果三级缓存存在则将Bean早期引用存放在二级缓存中并移除三级缓存。(升级为二级缓存)。其次,doCreateBean()方法中Bean在实例化完成之后会直接将未装配的Bean工厂存放在三级缓存中,并且移除二级缓存。最后,registerSingleton()方法中将成熟的Bean添加到一级缓存,移除二三级缓存。对Bean的创.转载 2020-09-28 19:53:22 · 998 阅读 · 0 评论 -
循环依赖【讲的很好】
一、前言这一篇博文主要讲一下我们spring是怎么解决循环依赖的问题的。二、什么是循环依赖首先我们需要明确,什么是循环依赖呢?这里举一个简单的例子:@Servicepublic class A { @Autowired private B b;}@Servicepublic class B { @Autowired private A a;}以这个例子来看,我们声明了a、b两个bean,且a中需要注入一个b,b中需要注入一个a。结合我们上篇转载 2020-09-15 20:24:10 · 2044 阅读 · 0 评论 -
@Autowired原理详解 :标识构造函数
在一个类中定义一个属性,正常情况下需要在此类中有对此属性赋值的代码,如setter方法,或者在构造函数中赋值,因此类和属性之间的关系已经确定下来了,类和属性间就有了一定的耦合关系。而IOC的精髓就是解耦,类中没有显式的对属性的赋值代码,同时属性的实际类型和值在运行时有系统动态的赋值,Spring对IOC做了很大的扩展,使用者可以很灵活的控制注入的对象类型及值。Spring内IOC的最直接体现就...转载 2020-05-08 10:18:27 · 2470 阅读 · 0 评论 -
Spring-通过源码看Bean的创建过程
1. finishBeanFactoryInitialization()1.1 preInstantiateSingletons()方法1.2 getBean()1.3 doGetBean()1.4 createBean()1.5 doCreateBean()2. Bean生命周期Spring的核心模块是IOC和AOP,而IOC中创建Bean又是十分重要的一环。在Spring的启动过程中,会...转载 2020-03-01 11:23:03 · 1698 阅读 · 0 评论 -
Spring配置中 bean上的属性parent的作用
省去多余的父类配置,比如 事务管理:<bean id="basicTxProxy2" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> PROPAGATION_REQUIRED PROPAGATION_REQ转载 2012-11-25 12:57:18 · 23416 阅读 · 4 评论 -
Spring获取bean方式(BeanFactory和ApplicationContext)
Bean工厂(com.springframework.beans.factory.BeanFactory)是Spring框架最核心的接口,它提供了高级IoC的配置机制。BeanFactory使管理不同类型的Java对象成为可能,应用上下文(com.springframework.context.ApplicationContext)建立在BeanFactory基础之上,提供了更多面向应用的功能,它转载 2012-11-25 13:04:33 · 13373 阅读 · 0 评论 -
Spring源码初探-IOC(4)-Bean的初始化-循环依赖的解决
https://www.jianshu.com/p/6c359768b1dc前言在实际工作中,经常由于设计不佳或者各种因素,导致类之间相互依赖。这些类可能单独使用时不会出问题,但是在使用Spring进行管理的时候可能就会抛出BeanCurrentlyInCreationException等异常 。当抛出这种异常时表示Spring解决不了该循环依赖,本文将简要说明Spring对于循环依赖的解...转载 2019-06-12 16:23:45 · 671 阅读 · 0 评论 -
Spring源码初探-IOC(1)-Bean的初始化
https://www.jianshu.com/p/375ef7095139前言对于一名Java码农来说,Spring真是太重要了。目前Spring的体系已经发展得非常壮大,其底层基石core,beans,context非常牢固。spring 体系结构图Bean初始化个人认为,Spring最原始或者最基础的功能是“容器”,帮你管理着一堆bean的生命周期,任你取用,要想更好...转载 2019-06-12 17:50:35 · 733 阅读 · 0 评论 -
Spring源码初探-IOC(3)-Bean的初始化-bean的加载
https://www.jianshu.com/p/ecc60703d315前言前面两篇文章主要介绍的是xml到BeanDefinition的过程,我们知道在使用Spring的过程中通常直接使用getBean(beanName)的方式,getBean返回的是实例化并且已经完成初始化后的对象。对于我们平时使用来说,创建一个对象通常会使用new,或者使用反射。我们使用反射instantiati...转载 2019-06-12 18:19:43 · 723 阅读 · 0 评论 -
【Spring源码分析】循环依赖的处理
[原创]个人理解,请批判接受,有误请指正。转载请注明出处:https://heyfl.github.io/Spring/Spring-Circular-Dependencies.html看源码的同学可以查看我的GitHub上面在官方的基础上加入了大量中文注释,帮助理解,喜欢的话也可以给个Star XD要了解的知识什么是循环依赖存在哪些循环依赖Setter循环依赖...转载 2019-06-12 23:00:09 · 1052 阅读 · 0 评论 -
Spring Bean注入的另一种方式-AutowireMode的一些理解
也可以参考:https://blog.csdn.net/qq_27409289/article/details/100753656Mybatis源码中的应用可以参考这篇文章:https://blog.csdn.net/z69183787/article/details/104544276灵魂拷问:不使用@Autowired、 @Resource、@Inject 注解,可以正常注入B...转载 2020-02-27 21:26:51 · 3189 阅读 · 3 评论 -
关于Mybatis扫描所有mapper包并生成dao实例不需要显示注入SqlSessionFactory的原因探查
大家都知道,一般spring配合mybatis会引入 mybatis-spring-1.2.2 这个jar包,会用到以下的类,在配置文件中<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xxxx....原创 2020-02-27 21:16:28 · 2497 阅读 · 0 评论 -
Spring Bean的解析 BeanDefinition 与 RuntimeBeanReference
1.BeanDefinitionHolder持有name和aliases,为注册做准备/** * Holder for a BeanDefinition with name and aliases. * Can be registered as a placeholder for an inner bean. */public class BeanDefinitionHolder...转载 2020-02-27 19:27:41 · 1435 阅读 · 0 评论 -
Spring配置 <context:component-scan/> <mvc:annotation-driven />
标签:这个标签对应的实现类是org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser仔细阅读它的注释文档可以很明显的看到这个类的作用。解析这个文档:这个类主要注册8个类的实例:1.RequestMappingHandlerMapping2.BeanNameUrlHa转载 2017-10-16 17:14:29 · 799 阅读 · 0 评论 -
Spring @Resource、@Autowired、@Qualifier的注解注入及区别
spring2.5提供了基于注解(Annotation-based)的配置,我们可以通过注解的方式来完成注入依赖。在Java代码中可以使用 @Resource或者@Autowired注解方式来经行注入。虽然@Resource和@Autowired都可以来完成注入依赖,但它们之间是有区 别的。首先来看一下: a。@Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bea转载 2017-01-11 21:58:15 · 5729 阅读 · 0 评论 -
Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
和 的区别 是用于激活那些已经在spring容器里注册过的bean(无论是通过xml的方式还是通过package sanning的方式)上面的注解。除了具有的功能之外,还可以在指定的package下扫描以及注册javabean 。下面我们通过例子来详细查看他们的区别,有三个class A,B,C,并且B,C的对象被注入到A中.package com.xx转载 2016-08-29 13:35:25 · 1073 阅读 · 0 评论 -
基于Spring的包含特定注解bean的package扫描工具
本文出处:http://blog.csdn.net/chaijunkun/article/details/23921547,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。Spring框架为Java开发提供了很多便利的工具和编程方式,最近在研究LDAP认证,多数技术问题都已经搞定,但是针对LDAP的ODM(Object-Direc转载 2016-06-01 14:59:19 · 2344 阅读 · 0 评论 -
spring中注册bean(通过代码动态注册)
[java] view plain copy print?//将applicationContext转换为ConfigurableApplicationContext ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext)转载 2016-05-04 06:32:47 · 10081 阅读 · 0 评论 -
在spring的bean中注入内部类
在spring中注入内部类,有可能会遇到如下异常信息:2014-5-14 21:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.ClassPathXmlApplication转载 2016-02-01 15:14:54 · 4893 阅读 · 0 评论 -
在web.xml中classpath和classpath*的区别
写spring的代码到现在,一直都很习惯性的拷贝web.xml中的内容,没怎么在意里面的内容,最近认真研究了下,很多东西都不是很理解,特别是classpath和classpath*的区别,研究了许久才搞明白,记录下备忘。classpath 和 classpath* 区别:classpath:只会到你指定的class路径中查找找文件;classpath*:不仅包含转载 2015-10-06 19:30:12 · 7401 阅读 · 0 评论 -
Spring @Configuration用annotation装配spring
下面是一个典型的Spring配置文件(application-config.xml): Xml代码 [xml] view plaincopybeans> bean id="orderService" class="com.acme.OrderService"/>转载 2015-08-08 21:38:15 · 3366 阅读 · 0 评论 -
依赖注入 javax.inject中@Inject、@Named、@Qualifier和@Provider用法
@Inject @Inject支持构造函数、方法和字段注解,也可能使用于静态实例成员。可注解成员可以是任意修饰符(private,package-private,protected,public)。注入顺序:构造函数、字段,然后是方法。父类的字段和方法注入优先于子类的字段和方法,同一类中的字段和方法是没有顺序的。 @Inject注解的构造函数可以是无参或多个参数的构造函转载 2014-08-19 19:25:19 · 47799 阅读 · 0 评论 -
<context:component-scan>使用说明
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean注意:如果配置了那么标签就可以不用再xml中配置了,因为前者包含了后者。另外还提供了两个子标签1. 2. 在说明这两个子标签前,转载 2014-07-04 21:27:36 · 2216 阅读 · 0 评论
分享