java - 如何禁用 Spring 对类中特定字段的自动装配?
问题描述
下面是一个使用 @Configuration 注解创建 Bean 的类。我正在慢慢地将 Spring 引入到遗留的 Java 应用程序中。我不想一下子把所有东西都 Spring 化——那太疯狂了。我想我会从常用的实用程序类之一开始,我不希望 Spring 为下面的三个字段(Enumerator、RandomDataGenerator、AliasMethodFactory)创建 Bean。如何关闭这些字段的自动装配?Spring 目前抱怨它无法为那些找到 Bean(它显然是在尝试自动连接它们)。
@Configuration
public class CustomRandom {
private Enumerator enumerator;
private RandomDataGenerator rDataGenerator;
private AliasMethodFactory amf;
@Bean
@Primary
public static CustomRandom buildRandom() {
return new CustomRandom(
new Enumerator(),
new RandomDataGenerator(
new MersenneTwister(System.currentTimeMillis() * Thread.currentThread().getId())
),
new AliasMethodFactory()
);
}
CustomRandom(Enumerator enumerator, RandomDataGenerator generator, AliasMethodFactory amf) {
this.enumerator = enumerator;
this.rDataGenerator = generator;
this.amf = amf;
}
//UNRELATED INSTANCE METHODS FOLLOW...
解决方案
Seperate the class for the Bean and the Configuration of the Bean. Like this
@Configuration
public class CustomRandomConfiguration
{
@Bean
@Primary
public static CustomRandom buildRandom()
{
return new CustomRandom(
new Enumerator(),
new RandomDataGenerator(
new MersenneTwister(System.currentTimeMillis() * Thread.currentThread().getId())
),
new AliasMethodFactory()
);
}
}
and the bean:
public class CustomRandom
{
private Enumerator enumerator;
private RandomDataGenerator rDataGenerator;
private AliasMethodFactory amf;
public CustomRandom(Enumerator enumerator, RandomDataGenerator rDataGenerator, AliasMethodFactory amf)
{
this.enumerator = enumerator;
this.rDataGenerator = rDataGenerator;
this.amf = amf;
}
}
推荐阅读
- c# - 如何在 OnGUI 函数之外获取鼠标位置?
- python - 如何解决错误“列表”对象没有属性“iterdi”
- python - “包含输入脚本的目录”是什么意思?
- fabricjs - Fabric JS Unicode 问题
- c++ - 是否可以在另一个模板类上专门化模板类的方法?
- sonarqube - GitLab-CI:声纳扫描器:术语“声纳扫描器”未被识别为 cmdlet、函数的名称,
- database - Postgres SQL 更新 JDBC 卡住
- cookies - Safari 不在子域上设置 cookie
- python - 使用标准库处理 Python cidr 网络地址
- java - hibernate 不在空数据库上创建模式