有没有可能将Spring托管Bean连接到一个不受Spring IoC管理的类中?假设有两个类ClassA
(不受Spring管理)和ClassB
(由Spring管理)有没有可能将ClassB
连接到ClassA
中。
这是我最近遇到的一个问题,我不知道该怎么做?
如果Spring没有管理bean,那么就不要考虑“连线”。相反,只需解决“如何将托管bean的引用转换为非托管bean”的问题。
在您的示例中,由于ClassA
不是由Spring管理的,所以您必须在某个地方创建它。创建ClassA
实例时,将对ClassB
的引用传递给ClassA
。
是的,这是可能的。要使用ApplicationContext
获取Spring托管Bean实例,需要一个ApplicationContextAware
实现。这是一个古老的Spring框架技巧。
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public final class BeanUtil implements ApplicationContextAware {
private static ApplicationContext CONTEXT;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
CONTEXT = applicationContext;
}
public static <T> T getBean(Class<T> beanClass) {
return CONTEXT.getBean(beanClass);
}
}
然后,您必须在ClassA中使用BeanUtil::getBean
静态方法来获取Application ationContext
中的ClassB实例。
public class ClassA {
private ClassB classB;
@Override
public String toString() {
return "ClassA - " + getClassB().toString();
}
// Lazy initialization of ClassB to avoid NullPointerException
private ClassB getClassB() {
if (classB == null) {
classB = BeanUtil.getBean(ClassB.class);
}
return classB;
}
}
问题内容: 我有一个通过调用构造函数实例化的类(Class ABC)。ABC类又具有通过自动接线注入的辅助类(XYZ类)。 我们的是基于Spring MVC的应用程序,在服务器启动时我看不到任何异常。 但是我仍然看到XYZ类为空。是否是因为Spring Container没有实例化ABC类? 在这种情况下,如何使用自动接线? 谢谢。 问题答案: 你可以使用这种方式在非spring bean类中使用
我正在使用Spring的事务支持和JPA(Hibernate)来持久化我的实体。一切正常,但我在处理一个请求中的部分更新时陷入困境: 对于每个用户(HTTP)请求,我必须将一个日志条目写入数据库表,即使“主”业务实体的更新失败(例如,由于验证错误)。因此,我的第一个/主要事务get被回滚,但第二个(写日志)应该提交。这似乎可以使用正确的传播级别来写入日志条目: 然而,我的问题是,我在第二个事务中注
问题内容: 我在python应用程序中使用的是将简单变量或变量列表存储在Redis数据库中,所以我认为最好在每次需要保存或检索变量时都建立与Redis服务器的连接,因为这样做没有做通常,并且不想建立可能会超时的永久连接。 通过阅读一些基本教程,我使用Redis类创建了连接,但是还没有找到关闭连接的方法,因为这是我第一次使用Redis。我不确定是否使用最佳方法来管理连接,所以我需要一些建议。这就是我
我们有一个项目是建立在双向grpc客户机/服务器上的C++。客户端只与服务器建立一个连接。服务器将有多个客户端。通过“netstat”命令,服务器端显示来自同一客户端的多个已建立的连接,但客户端当时只有一个与该服务器的活动连接。 以下是一个例子: tcp6 0 0 serverip:端口clientip:48677已建立 tcp6 0 0 serverip:端口clientip:53149已建立
创建一个连接 类org.jivesoftware.smack.XMPPConnection管理你的XMPP服务器的连接,默认实现类为org.jivesoftware.smack.XMPPTCPConnection。 主要是使用两个构造函数,第一个是 XMPPTCPConnection(String) ,它把 你想连接到服务器名称 作为参数。 连接和断开 // Create the configur
我是Spring保安的新手。我有一个要求做一个基于URL的身份验证,其中用户需要被认证基于唯一的引用,将发送每次作为一个参数在URL。我将把这个引用传递给webservice,获取所需的数据,然后对用户进行身份验证(并设置角色)。身份验证和授权部分工作正常。 但是,当我再次尝试访问应用程序时(现在在URL中使用了不同的引用),它表示“SecurityContextholder没有用匿名令牌填充,因