技术标签: spring spring boot java
这是我遇到的情况,当一个对象使用过关键new时,它是不能被Spring所管理的。
所以如果在这些对象中使用@Autowired去注入对象,得到的结果也是为null。
就比如我在项目中遇到的情况:
@Slf4j
@Component
public class MyCrawler extends WebCrawler {
@Autowired
private BookFeignService bookFeignSerivce;
@Override
public boolean shouldVisit(Page referringPage, WebURL url) {
// ....
}
@Override
public void visit(Page page) {
// ....
}
}
该类继承了一个WebCrawler,其实就是一个第三方框架,在我执行某个功能的时候,这些被重写的方法就会被其内部自动调用。
在该类中使用@Autowired注入对象,就会看到注入的对象为null,尽管这些对象已经在Spring容器中存在了。
主要原因就是因为该类继承了一个第三方框架,在执行的过程中,它是被人家框架内部创建实例然后去调用的,这就导致了可能在内部new过这个对象了,所以就导致了@Component对这个类根本不起作用。
那么,如果我们非要在该类中获取到Spring容器中的对象,应该怎么办?
写一个工具类:
@Component
public class MyBeanUtil implements ApplicationContextAware {
protected static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext app) throws BeansException {
if (applicationContext == null) {
applicationContext = app;
}
}
/**
* 通过类的class从容器中手动获取对象
*/
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}
通过getBean这个方法就可以获取到Spring容器中的对象了。
注意:该类一定要加@Component注解。
文章浏览阅读942次。删除 List 中的元素会产生两个问题:删除元素后 List 的元素数量会发生变化;对 List 进行删除操作可能会产生并发问题;_java synchronized list 元素删除
文章浏览阅读3.7k次。 D语言通过模板,很好的支持泛型编程。与C++的模板相比较,各有优略。总体上说,D语言的模板在很多方面还是很方便的。 D语言还支持模板的混入(mixin),简单的讲就是把模板实例化之后,将模板中的代码插入到当前的位置。这是一个非常方便的工具! 具体的,请看下面的演示代码。import std.stdio;void main()...{ tryTemplate();_d语言 模板实例化
文章浏览阅读364次。(Linux)的提权是怎么一回事:收集 – 枚举,枚举和一些更多的枚举。过程 – 通过数据排序,分析和确定优先次序。搜索 – 知道搜索什么和在哪里可以找到漏洞代码。适应 – 自定义的漏洞,所以它适合。每个系统的工作并不是每一个漏洞“都固定不变”。尝试 – 做好准备,试验和错误。系统类型系统是什么版本?cat /etc/issuecat /etc主机上有哪些工作计划?crontab -lls -al..._linux服务器被提权如何解决
文章浏览阅读5.8k次。stackoverflow 针对Device token 什么时候会发生变化有个很棒的解答。在一台设备中, device token 是系统级别的,不同 App 获得的 device token 是相同的。假如我的手机安装了 Angry Bird 和 Evernote ,这两个应用获得 device token 一模一样。device token 并不会因为单个 app 的_苹果手机恢复出厂设置token会不会变
文章浏览阅读1.9k次。package com.io.ioDemo;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;//字符流读文件public class FileReaderDemo { public static void mai_字符输入流filereader
文章浏览阅读1.8w次,点赞14次,收藏12次。一、背景: 翻看着差不多去年这时候写的《痴迷Linux(一)—初识篇》不禁感慨时光飞逝,转眼间已一年闪过。。。回想这一年与Linux交往之路,发现与她也仅仅是停留在表面上的!回想原因:自己现在还没到和她深交的阶段(正所谓距离产生美嘛)同时由于一些原因(比如:这次实训、装服务器等)自己也并一直和她有来往。 这次实训是学校为大三计算机专业安排历时三天;主要讲课内容: ①..._深入理解linux系统
文章浏览阅读403次。RDD与DataFrame与Dataset之间的转换关系:_dataframe、dataset、rdd之间的转换
文章浏览阅读2.2k次。数据库一、概念数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。二、分类关系型数据库NOSQL三、NoSQL与关系型数据库的区别存储方式传统的关系型数..._谈谈关系型数据库与非关系型数据库的联系和区别
文章浏览阅读253次。承接上一章,项目还是使用之前的两个已经创建好的spring boot项目!这一节主要是学习Eureka的注册和使用!跟上一章一样,我们在父模块下继续创建一个module,这次创建一个Eureka项目!第一,先创建一个Eureka项目,并成功启动1,new module2,创建一个Eureka项目,跟上一节有一点点的小区别,注意一下3,直接下一步下一步到结束,完了删除多余的文..._eureka注册其他机器的微服务
文章浏览阅读2.1k次。当使用VCS 仿真是,如果需要dump 波形,可以使用:1,fsdbdumpfile xxx.fsdb或者使用fsdbAutoSwitchDumpfile < size> name < barksize>2, 通过fsdbDumpvars < depth> 设置波形深度,默认设置0 全dump;_vcs $dumpports
文章浏览阅读202次。XamarinAndroid组件教程设置自定义子元素动画(一)如果在RecyclerViewAnimators.Animators中没有所需要的动画效果,就可以自定义一个。此时,需要让自定义的动画继承BaseItemAnimator抽象类。【示例1-2】下面以RecylerViewAnimatorsItemAnimator项目为基础,在RecylerView子元素进行添加/删除操作时,实现透明动画..._xamarin imageview 动画
文章浏览阅读1.3k次。传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2395其实还不太会写……Code:#include#include#includeusing namespace std;typedef long long LL;struct edge{ int u,v,w,c,t; bool operator<(const edg_最小乘积生成树 注释