- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在这里发现了类似的问题 Spring - how to inject a bean into class which is created many times at runtime?和 Why is Spring's ApplicationContext.getBean considered bad?但都没有真正回答我的问题。
示例代码:
public interface AppNameProvider
{
String getAppName();
}
public class DefaultAppNameProvider implements AppNameProvider
{
private String appName;
public String getAppName()
{
return appName;
}
public setAppName(String appName)
{
this.appName = appName;
}
}
<bean id="appNameProvider" class="some.package.DefaultAppNameProvider">
<property name="appName" value="MyApplication"/>
</bean>
public class MyException extends RuntimeException
{
// Imagine obligatory constructors here...
public String getAppName()
{
// Inject appNameProvider somehow here
return appNameProvider.getAppName();
}
}
我有一个在 xml 中声明的提供者 bean。在示例中,为简单起见,该值只是在 xml 中声明。我有一个自定义异常需要从 bean 接收一些东西。如何将这样的 bean 注入(inject)到异常类中。我显然不能将异常声明为 Spring bean。 appName 只是一个简单的示例,它可以是任何其他内容。您可能想知道为什么 myException.getAppName() 的假设调用者不会简单地调用 appNameProvider.getAppName()?因为它不是故意的,例如每个异常等中可能有不同的提供者。
我想知道如何将 bean 注入(inject)到此类异常中。我可以添加 setter 并在异常抛出时设置提供者。但是我必须知道从外部(在我的应用程序代码中)使用哪个提供程序,并且我必须在我想抛出此异常的任何地方冗余地执行此操作。理想情况下,我想在 xml 中声明将哪个提供程序用于异常。
最终这个问题可以扩大,这样我们就可以考虑任何不是 bean 本身的运行时对象,而不是异常。
PS 我不害怕在代码中硬编码对 Spring 的依赖。我使用 Spring,我想拥抱它 - 而不是避免它。
最佳答案
抛出新的 MyException(provider)
关于java - 如何将 Spring bean 注入(inject)到 Exception 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8257717/
我是一名优秀的程序员,十分优秀!