springnew对象注入(SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法)

2025-11-09 23:00:02 0

springnew对象注入(SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法)

本篇文章给大家谈谈springnew对象注入,以及SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法

运行此Service所提供的方法后报异常提示:plantService 为 null

自己创建的类未使用(@Component)即为加入Spring容器中,则其中的被@Autowired的成员变量也不会被注入。

不使用@Autowired,而使用一个自定义工具类帮助注入

第一步:创建工具类并使用@Component注解注入
此处可能报applicationContext为null的错误
解决办法:将此工具类放在Application启动类同一个包下

第二步:
在需要注入的成员变量位置使用工具类赋值

Spring 两个对象互相注入会导致什么问题

试试

@Service("A")
public class A {
    @Autowired
    private B b;
     
    public A(){
        System.out.println("****** A is load");
    }
     
    public void print(){
        System.out.println("A success!!!");
    }
     
}


   
@Service("B")
public class B {
    @Autowired
    private A a;
     
    public B(){
        System.out.println("****** B is load");
    }
     
}


两个类,用Spring管理,相互注入,不会报错

spring容器初始化bean

开始时,如果A和B都是容器管理,那么在初始化bean的时候,会先相当于new出来A对象和B对象,然后在分别初始化内部的属性。

当然这样的注入不会报错。但如果你是自己new出来的,那就会出现死循环。

“spring中注入是什么意思” 这里怎么理解“注入”的意思

spring通过“控制反转”实现了“依赖注入”。所谓的注入,我的理解是程序实现就像盖房子,spring允许你在类(class)里搭个框架,在配置文件中注明在什么地方用什么材料,在运行时spring按照你的配置真正向这个架子里“注入”了水泥、钢筋等等。
这在实际运用中很方便,比如你需要向日志服务器提交记录,但是日志服务器的ip地址可能会变更,你可以把ip地址写在配置文件里,这样当ip改变时,只需更改配置文件,而不需要修改类再重新编译。

service dao手动实例化(new)导致类中的spring对象无法注入的问题解决

手动注入会报空指针异常

new对象 =null,使用new创建对象时,Spring注入的bean为null

使用标签@Component

不需要手动,最好是自动注入

使用spring后,哪些类该用实例注入(DI),哪些类该用new来创建实例

首先说spring管理的类,就是spring在启动的时候,在spring容器中,由spring给你创建的,也就new的,spring会帮你维护。一般都是单例的,也就是一个对象。
需要自己new的实例,一般是数据实例,比如你要插入一条数据,就需要自己new。因为这些实例,包含数据信息,每个实例都是不同的,当然不能是单例模式的,也就不能使用注入。
然后说:Spring AOP的目标是与Spring的依赖注入功能良好地集成...”
是指spring管理的实例,例如啊,你声明了一个id为user的bean,在aop中,就可以直接使用该id来关联这个实例。
最后:要想给将来留下足够实现AOP的机会,岂不是要尽可能用实例注入来替代几乎所有的new?
spring管理的一般都是逻辑类,是单例,是线程安全的。
当然,逻辑类中可以有数据类,这时候你可以在程序中new
你使用aop,你不是去对一个数据进行aop吧?肯定是针对某个逻辑进行的。

手动向Spring容器中注入对象

手动向Spring容器中注入对象的方法有很多,本文将简单阐述其中的四种

我们可以实现一个BeanFactory的后置处理器,在其中就可以获得BeanFactory,这样就可以调用registerSingleton方法。
注:此处bean的名字可以自定义,如这里就定义为sherlock。

如果在容器中获取该类

控制台输出:

对象就已成功注入到Spring容器中了。
注:其实在context中也有registerBean方法,可以实现一样的效果。(ApplicationContext其实继承了BeanFactory,所以它也拥有Bean工厂的功能,除此之外ApplicationContext还继承了很多其他的类,拥有一些辅助功能。总的来说,ApplicationContext其实包括了BeanFactory)

在配置类中,使用@Bean注解,返回一个想要注入的对象。@Bean括号中是bean的名字,默认为类名的小写形式。

控制台输出:

***隐藏网址***
我们可以创建一个类去实现FactoryBean接口

控制台输出:

@Import只能用在类上 ,@Import通过快速导入的方式实现把实例加入spring的IOC容器中
@Import的三种用法主要包括:

注意:这样注入的类名为类的全限定名。

@Import三种方式的总结
第一种用法:@Import({ 要导入的容器中的组件 } ):容器会自动注册这个组件,id默认是全类名
第二种用法:ImportSelector:返回需要导入的组件的全类名数组,springboot底层用的特别多。
第三种用法:ImportBeanDefinitionRegistrar:手动注册bean到容器

好了,以上就是四种手动向Spring容器中注入对象的方法。总结一下吧,分别是:

spring的bean注入属性有哪几种方式

但是,对于系统中非Spring框架管理的类,如果需要获取Spring管理的类,或者,程序中需要动态的根据Bean的id来获取Bean实例,不可能事先为该类提供所有需要的Bean属性的setter方法,在类似这样的情况下,获取Spring框架管理的类实例的方法有多种,现在简单总结如下:方法一:在初始化时保存ApplicationContext对象代码:ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId");说明:
这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。
方法二:通过Spring提供的工具类获取ApplicationContext对象代码:import org.springframework.web.context.support.WebApplicationContextUtils; ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc) ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc) ac1.getBean("beanId"); ac2.getBean("beanId");说明:
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后
在通过它获取需要的类实例。
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。
方法三:继承自抽象类ApplicationObjectSupport说明:
抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationCont
ext。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext
context)方法将ApplicationContext 对象注入。
方法四:继承自抽象类WebApplicationObjectSupport说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext
方法五:实现接口ApplicationContextAware说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对
象。Spring初始化时,会通过该方法将ApplicationContext 对象注入。
以上方法适合不同的情况,请根据具体情况选用相应的方法。
这里值得提一点的是,系统中用到上述方法的类实际上就于Spring框架紧密耦合在一起了,因为这些类是知
道它们是运行在Spring框架上的,因此,系统中,应该尽量的减少这类应用,使系统尽可能的独立于当前运
行环境,尽量通过DI的方式获取需要的服务提供者。
本人认为,方法五比较可行,可以设计一个工具类,专门来获取Spring中的类。减少对业务代码的侵入性。

spring为什么要使用注入的方式,new不是很好用吗

我是这么理解,某个bean,第一次是被new出来的,然后被分配一块内存,存放这个bean的所有信息,之后在使用到该bean的地方使用注解自动注入,这时使用的就是刚才被new出来的那个,不会再new,除非你设置@Scope(’prototype’),依次类推,所有注入该bean的地方,最多因为对象名不同,被分配一小块内存,但这小块内存只存放指向被new出来的bean的信息,都是引用。如果每次都是new出来,每次都要分配内存,虽然说Java有自动回收机制,但如果一个项目中bean很多,在启动服务器的时候,全部加载在Spring容器,不是项目启动失败就是跑起来很慢很慢,所以说能剩则剩,以上个人见解,勿拍砖。

Spring哪些类需要注入,哪些不用

基本上是这样的,不过注入的话也分单例和多例,需要根据实际情况去设置,spring默认情况下都是单例的,但有些情况不适用单例,例如有全局变量的时候,可能会有一些并发问题,可能就需要设置成多例

关于springnew对象注入,SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法的介绍到此结束,希望对大家有所帮助。

springnew对象注入(SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法)

本文编辑:admin

更多文章:


意大利女排甲级联赛(世界女排联赛2023排名)

意大利女排甲级联赛(世界女排联赛2023排名)

“意大利女排甲级联赛”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看意大利女排甲级联赛(世界女排联赛2023排名)!本文目录世界女排联赛2023排名女排艾格努是哪国人世界女排联赛历届排名排球运动员朱婷去哪了世界女排联赛202

2026年5月7日 12:45

css表白代码(谁能告诉我,在百度空间上仿QQ空间的CSS所有代码)

css表白代码(谁能告诉我,在百度空间上仿QQ空间的CSS所有代码)

“css表白代码”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看css表白代码(谁能告诉我,在百度空间上仿QQ空间的CSS所有代码)!本文目录谁能告诉我,在百度空间上仿QQ空间的CSS所有代码如何用深色模式表白谁能告诉我,在

2026年4月19日 12:30

化学反应工程与工艺期刊(国际上影响因子较高的关于催化剂方面的杂志有哪些)

化学反应工程与工艺期刊(国际上影响因子较高的关于催化剂方面的杂志有哪些)

大家好,如果您还对化学反应工程与工艺期刊不太了解,没有关系,今天就由本站为大家分享化学反应工程与工艺期刊的知识,包括国际上影响因子较高的关于催化剂方面的杂志有哪些的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录国际

2026年5月24日 10:00

js实现队列(javascript函数节流和函数防抖之间的区别)

js实现队列(javascript函数节流和函数防抖之间的区别)

本篇文章给大家谈谈js实现队列,以及javascript函数节流和函数防抖之间的区别对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录javascript函数节流和函数防抖之间的区别JS中的 Array 类是否有 add方法ja

2026年8月30日 20:15

clip converter(用ClipConverter下载的youku视频在电脑哪个文件夹)

clip converter(用ClipConverter下载的youku视频在电脑哪个文件夹)

其实clip converter的问题并不复杂,但是又很多的朋友都不太了解用ClipConverter下载的youku视频在电脑哪个文件夹,因此呢,今天小编就来为大家分享clip converter的一些知识,希望可以帮助到大家,下面我们一

2026年8月24日 21:15

matlabplot点的形状(MATLAB作图时,如何把标志数据点的形状做成实心的)

matlabplot点的形状(MATLAB作图时,如何把标志数据点的形状做成实心的)

今天给各位分享MATLAB作图时,如何把标志数据点的形状做成实心的的知识,其中也会对MATLAB作图时,如何把标志数据点的形状做成实心的进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录MATLAB作图时,如何把

2026年1月13日 09:15

配置管理属于什么职位类型(公司让我从需求工程师转做配置管理工程师,大神们怎么看,哪个发展前景好一些ps:我是应届毕业生,还)

配置管理属于什么职位类型(公司让我从需求工程师转做配置管理工程师,大神们怎么看,哪个发展前景好一些ps:我是应届毕业生,还)

“配置管理属于什么职位类型”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看配置管理属于什么职位类型(公司让我从需求工程师转做配置管理工程师,大神们怎么看,哪个发展前景好一些ps:我是应届毕业生,还)!本文目录公司让我从需求工

2025年9月1日 04:15

文本转html代码(txt文件怎么转换为html文件)

文本转html代码(txt文件怎么转换为html文件)

大家好,文本转html代码相信很多的网友都不是很明白,包括txt文件怎么转换为html文件也是一样,不过没有关系,接下来就来为大家分享关于文本转html代码和txt文件怎么转换为html文件的一些知识点,大家可以关注收藏,免得下次来找不到哦

2025年7月13日 23:45

pdf在线编辑免费网页(什么样的免费网站可以推荐一下吗)

pdf在线编辑免费网页(什么样的免费网站可以推荐一下吗)

今天给各位分享什么样的免费网站可以推荐一下吗的知识,其中也会对什么样的免费网站可以推荐一下吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录什么样的免费网站可以推荐一下吗如何将PDF文件进行编辑、有没有免费的P

2026年4月3日 00:45

指数函数相加(指数函数的运算法则)

指数函数相加(指数函数的运算法则)

大家好,今天小编来为大家解答以下的问题,关于指数函数相加,指数函数的运算法则这个很多人还不知道,现在让我们一起来看看吧!本文目录指数函数的运算法则指数函数怎样加运算求指数函数的和的程序指数函数相加问题指数函数运算是怎么样的指数函数的运算法则

2026年4月15日 03:00

easyui获取数据表格的值(Easyui中获取datagrid某多个列的值)

easyui获取数据表格的值(Easyui中获取datagrid某多个列的值)

大家好,如果您还对easyui获取数据表格的值不太了解,没有关系,今天就由本站为大家分享easyui获取数据表格的值的知识,包括Easyui中获取datagrid某多个列的值的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2025年5月30日 22:45

exception的词根词缀(cept的词根是什么)

exception的词根词缀(cept的词根是什么)

本篇文章给大家谈谈exception的词根词缀,以及cept的词根是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录cept的词根是什么词根词缀在线查询系统 只要输入单词就显示词根词缀的cept的词根是什么cept词根的单

2026年1月16日 00:15

动漫卡牌游戏源码(如何自制卡片游戏)

动漫卡牌游戏源码(如何自制卡片游戏)

大家好,关于动漫卡牌游戏源码很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何自制卡片游戏的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录如何自制卡片

2025年12月8日 18:30

live up(live 后面加介词有几种用法)

live up(live 后面加介词有几种用法)

这篇文章给大家聊聊关于live up,以及live 后面加介词有几种用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录live 后面加介词有几种用法英语翻译:live up her reputation 中的 live up

2025年11月12日 10:15

oracle datediff(oracle 时间相减函数)

oracle datediff(oracle 时间相减函数)

各位老铁们,大家好,今天由我来为大家分享oracle datediff,以及oracle 时间相减函数的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目

2025年9月13日 22:15

unicode查询网站(给个汉字查找网站)

unicode查询网站(给个汉字查找网站)

大家好,关于unicode查询网站很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于给个汉字查找网站的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录给个汉

2026年4月25日 21:00

java培训好还是自学好(Java软件开发,是自学的好还是参加java培训机构)

java培训好还是自学好(Java软件开发,是自学的好还是参加java培训机构)

本篇文章给大家谈谈java培训好还是自学好,以及Java软件开发,是自学的好还是参加java培训机构对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年5月26日 11:45

js修改style属性(js如何改变一个图片的style的top属性)

js修改style属性(js如何改变一个图片的style的top属性)

这篇文章给大家聊聊关于js修改style属性,以及js如何改变一个图片的style的top属性对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录js如何改变一个图片的style的top属性如何使用JavaScript修改图片的大

2026年2月4日 02:15

dw软件官方免费下载中文版(Dreamweaver哪里有免费版)

dw软件官方免费下载中文版(Dreamweaver哪里有免费版)

本篇文章给大家谈谈dw软件官方免费下载中文版,以及Dreamweaver哪里有免费版对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录Dreamweaver哪里有免费版请问dw软件在哪下载才能不收费!!!如何免费下载ps 和dw

2026年1月9日 06:45

word2019开发工具控件属性是灰色的(为什么word打开以后,工具栏里边的命令都是灰色的)

word2019开发工具控件属性是灰色的(为什么word打开以后,工具栏里边的命令都是灰色的)

这篇文章给大家聊聊关于word2019开发工具控件属性是灰色的,以及为什么word打开以后,工具栏里边的命令都是灰色的对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录为什么word打开以后,工具栏里边的命令都是灰色的word工

2026年5月10日 18:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索