当前位置: 首页 > 知识库问答 >
问题:

检测未使用的Spring bean

黄丰
2023-03-14

如果Spring配置只包含Eagy(非惰性)singleton beans,即默认值,那么Spring是否可能在任何地方都没有注入这些bean的情况下抛出异常?我本质上是在寻找一种以Spring bean的形式检测死代码的方法。

我的问题有点类似于这些。

  • http://forum.spring.io/forum/spring-projects/container/116494-any-tools-or-method-to-identifice-unused-spring-beans
  • Spring实例化和“未使用的beans”
  • 如何检测Spring中未使用的属性

然而,

    null

共有1个答案

宰父学
2023-03-14

如果缺少必要的bean,Spring肯定会抛出异常。它是否也可以在找到bean但不需要的相反场景中抛出异常?

TL/DR:

Spring不支持这一点(而且可能永远不会)。

让我们看看下面的例子:

首先,我们有一个简单的接口DataService

public interface DataService {
 String getData();
}

现在我们有两个spring bean实现了这个接口:

@Service("firstDataService")
public class FirstDataService implements DataService {

  @Override
  public String getData() {
    return "FIRST DATA SERVICE";
  }
}

@Service("secondDataService")
public class SecondDataService implements DataService {
  @Override
  public String getData() {
    return "SECOND DATA SERVICE";
  }
}
@Service
public class DataCollector {

  @Autowired
  ApplicationContext applicationContext;


  String getDataFromService(String beanName) {
    DataService ds = (DataService) applicationContext.getBean(beanName);
    return ds.getData();
  }
}

现在,当spring在上下文初始化期间查看DataController的定义时,无法确定DataCollector依赖于哪些bean。这完全取决于应用程序逻辑,以及调用GetDataFromService方法时Beanname参数所使用的值。

因此,spring无法确定是否有从未使用过的bean(因为bean的使用可以是动态的,就像上面的例子一样)。

 类似资料:
  • 问题内容: 我是AngularJs的新手,所以这可能微不足道。是否有内置的AngularJ 来检测表单中未保存的数据。如果没有,那么如何去写一个。任何指针将不胜感激。 html代码是 我的角度js控制器代码是 我正在尝试编写指令以检测未保存的数据,并且我猜想它会写在上述控制器中。 问题答案: AngularJS设置CSS类和任何输入栏你已经使用在NG- 模型,您的FormController拥有的

  • 日安。 我试着让我的电脑检测我的JDK,我想安装SDK管理器,对于eclipse,我的目标是运行一个虚拟的android设备。我已经安装了JDK,并设置了JAVA_HOME路径。下面是路径的一些片段。我目前正在运行Windows1064bit,没有找到任何链接到其他要做的事情。我已经找了一段时间了。 CMD错误消息 如果有人知道我做错了什么,请告诉我。

  • 我有一个带边的无向图。每条边都具有一定的性质,如A点和B点之间的边之一是 在C点和D点之间的另一个可以是 我们得到了这样一个图和已知的旅行路径 有快一点的吗?

  • 我有一堂名为“吃饭”的课。swift在我的项目和单元测试中 但问题是:使用未解决的标识符"Meal"

  • 问题内容: 下面是到目前为止的代码 如何发出警报或是否有一些未保存的数据,以便用户决定是否继续? 问题答案: 这样的事情应该做到: 请注意,在此示例中未触发$ locationChangeStart的侦听器,因为在这样一个简单的示例中AngularJS不处理任何路由,但它应在实际的Angular应用程序中运行。

  • 问题内容: 我需要在ASP .Net应用程序中实现“未保存的更改”提示。如果用户修改了Web表单上的控件,并试图在保存之前导航离开,则将出现提示,警告他们尚未保存更改,并为他们提供取消并保留在当前页面上的选项。如果用户未触摸任何控件,则不应显示该提示。 理想情况下,我想用JavaScript实现此功能,但是在我开始滚动自己的代码之前,是否有任何现有的框架或推荐的设计模式来实现这一目标?理想情况下,