我有一个例子是这样的
类other
需要MyBean
的实例,因此我创建了一个属性,并在创建和other
时使用该属性
@Configuration
public SomeClass {
@Resource
private MyBean b;
@Autowired
Environment env;
@Bean
public MyBean myBean() {
MyBean b = new MyBean();
b.foo(env.getProperty("mb"); // NPE
return b;
}
@Bean
public Other other() {
Other o = new Other(o);
return o;
}
}
但在初始化MyBean
对象时,我得到了NullPointerException
,我想这是因为env
属性还没有连线。
如果我不使用bean而直接使用方法,那么一切工作都很好。
@Configuration
public SomeClass {
@Autowired
Environment env;
@Bean
public MyBean myBean() {
MyBean b = new MyBean();
b.foo(env.getProperty("mb"); // NPE
return b;
}
@Bean
public Other other() {
Other o = new Other(myBean());
return o;
}
}
是因为我在同一个@configuration
类中定义了@bean
吗?
尽管这是一个有趣的概念问题,但Spring Java配置的方法是将所需的bean作为参数传递,这样就可以避免将bean自动作为配置类的字段。如果您的任何bean碰巧需要mybean
实例,只需将其作为参数提供:
@Bean
public Other other(MyBean myBean) {
Other o = new Other(myBean);
return o;
}
从配置类中调用@bean
anotated方法也没有问题,就像您在第二个代码片段中所做的那样,因为它们被代理并缓存了,所以它们不会创建不必要的实例。但是,我倾向于遵循上面的代码,因为它允许开发人员快速了解所需的依赖关系。
话虽如此,对于您的具体问题,@autowired
代替@resource
起作用,但是在@configuration
类中使用它们是没有意义的。只需使用局部方法参数。
我有一个注册程序,用户可以在餐厅预订餐桌。 因为我需要存储潜在的无限量的客户,所以我不能显式地创建Customer类的新实例,因为我需要能够在运行时添加它们。 我想过使用HashMap通过他们填写的注册表插入每个用户,但是,它不是保留每个客户的唯一值,而是用哈希图中的最新条目覆盖它们。 明确地说,键正在改变,它成功地添加了一个新的键,但是前一个键中的值被覆盖了 例子 类客户有 3 个设置器:设置
问题内容: 是否可以在SQL中的另一个用户定义表类型(嵌套的用户定义表类型)中使用用户定义的表类型。 我有高级发送表中的行的数据表。 请帮助如何将表行中的表数据从 asp.net发送到sql 。通过循环还是有任何简单的方法将嵌套表数据发送到服务器。 问题答案: 不,为什么会这样?这不是SQL Server(或任何关系数据库)的工作方式。 从TechNet的“用户定义的表类型”页面上: 限制 用户定
问题内容: Python 3.4引入了一个新模块,该模块向该语言添加了枚举类型。的文档提供了一个示例来演示如何扩展它: 此示例还演示了一个问题:在property方法中,定义了一个常量,该常量通常在类级别定义- 但是尝试在a级别内执行此操作只会将其添加为枚举的成员之一,因此,在方法内部定义。 如果该类想在其他方法中使用此常量,则也必须在其中定义它,这显然不是理想的选择。 有什么方法可以在中定义类常
我刚开始使用Java,到处搜索,但无论出于何种原因都无法找到解决方案。我的问题对我来说似乎很简单:我在同一个文件夹中有两个类,该文件夹是我的包,为了说明: 我需要在第2类中创建第1类的实例,但它就是不起作用。这是一个示例: 文件路径: 文件路径: 我得到这个错误 根据要求,完整的源代码:注:class1=ClientIndividual,class2=涉众 第一个文件 第二个文件 第三个文件(接口
目前,不允许在接口中使用get/set方法(访问器)。例如: 此外,TypeScript 不允许在类方法中使用数组函数表达式:例如: 有没有其他方法可以在接口定义上使用getter和setter?
我有多个参数要引用,但我不想一个一个地指定它们。