在春季,如果实现了bean
ApplicationContextAware
,则它可以访问applicationContext
。因此,它能够获得其他豆类。例如
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext context) throws BeansException {
applicationContext = context;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
}
然后SpringContextUtil.getApplicationContext.getBean("name")
可以得到bean的“名称”。
要做到这一点,我们应该把这个SpringContextUtil
里面的applications.xml
,如
<bean class="com.util.SpringContextUtil" />
这里的bean SpringContextUtil
不包含属性applicationContext
。我想当spring
bean初始化时,就设置了这个属性。但是,这是怎么做的呢?该方法如何setApplicationContext
调用?
当spring实例化bean时,它会寻找几个接口,例如ApplicationContextAware
和InitializingBean
。如果找到它们,则将调用这些方法。例如(非常简化)
Class<?> beanClass = beanDefinition.getClass();
Object bean = beanClass.newInstance();
if (bean instanceof ApplicationContextAware) {
((ApplicationContextAware) bean).setApplicationContext(ctx);
}
请注意,在较新的版本中,使用注释可能比实现特定于Spring的接口更好。现在您可以简单地使用:
@Inject // or @Autowired
private ApplicationContext ctx;
在spring中,如果一个bean实现了,那么它就能够访问。因此它能够得到其他的豆子。例如。 为此,我们应该将这个放在中,例如。 这里的bean不包括属性。我猜当spring bean初始化时,这个属性就被设置了。但这是怎么做到的呢?如何调用方法?
问题内容: 我确实在项目中的三个模型对象之间有关系(文章末尾的模型和存储库片段)。 当我调用它时,会触发三个选择查询: (“ sql”) (对我而言)这是非常不正常的行为。据阅读Hibernate文档后所知,它应该始终使用JOIN查询。在类中更改为 查询时(带有附加SELECT 的查询)没有任何区别,而在类更改为 (使用JOIN查询时)则没有变化。 当我使用抑制射击时,有两个选择: 我的目标是在所
我正在尝试在Springmvc中设置OpenSessionInViewInterceptor来修复:org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话。 下面是我已经拥有的代码以及错误的来源。 AppConfig.java featured.jsp ${article.user.isSubscribed()}抛出该错误很可能是因为无法提
我正在编写一个Tomcat应用程序,它充当一些内部服务的代理。 我已经将Spring项目从基于XML和注释的混合配置切换到基于Java和注释的配置。 根身份验证筛选器的代码: 在我的控制器中,是正确的(不是null)。 我遵循了你所有的指示2。但现在我得到了一个例外:
问题内容: 注释如何工作? 我的目标是仅在提供此类的类包含在类路径中时才加载特定的bean 。 我以为我可以一个注释与和Maven作为可选声明依赖性: 现在,任何具有as依赖关系的人都应该自动连接该bean。但是没有依赖项的任何人都应该跳过它。 但是,当我启动该应用程序时,出现以下错误: 所以我可能做错了。然后,如何在依赖关系jar和类路径中包含的类的条件下创建bean? 从春季文档: 必须存在的
问题内容: 我有这样的代码: 资料库 服务 我不知道为什么我可以调用“ interface EquipmentRepository”方法。EquipmentRepository是一个接口,对吗? 问题答案: Spring Repository负责将DAO导入DI容器,并将未检查的异常导入Spring 。Spring Repository批注使用@Component批注进行元注释,以便将存储库类用于