- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们使用 @Configuration
类,其中包含许多 @Bean
带注释的方法,其本质上如下所示:
@Bean
public TeamContactIndexer teamContactIndexer(GroupService groupService, ContactCrudService contactCrudService, ContactRetrieveService contactRetrieveService) {
return new TeamContactIndexer(groupService, contactCrudService, contactRetrieveService);
}
因此,这会返回一个新的 bean,并通过方法参数将其他 spring 声明的内容按名称注入(inject)到构造函数中。
我知道减少冗长的唯一方法是使用 @Component
注释 bean,并使用 @Autowired
注释构造函数。
不过,如果我能去就好了……
@Bean
public TeamContactIndexer teamContactIndexer;
...并且让 spring 发现它需要 Autowiring 该类的构造函数(100% spring free)来生成 bean。据我所知,Spring 目前不支持这一点,尽管据我所知这应该很容易做到。我是否遗漏了一些东西,或者真的没有办法在我的 @Configuration 类中对构造函数调用进行微观管理(除了用注释乱扔我的代码)?我的绝大多数 @Bean
方法应该可以像这样轻松替换。
更新
@bezmax 在这里提供了一种可行的方法,即使用组件扫描注释。
@配置
@ComponentScan(
basePackages={"com.github.jsonj.tools"},
includeFilters = { @Filter(type = FilterType.ASSIGNABLE_TYPE, value = {JsonParser.class})})
公共(public)类 JsonParserConfig {
}
我已经使用上面的内容为我使用的库中没有注释的 bean 提供了 bean 定义。这取代了我之前使用的 @Bean 注解的工厂方法。它仍然有点冗长,但至少您可以放入逗号分隔的类列表。对于此用例,类型的默认值是错误的,因此您必须指定它;同样,即使可以从过滤器上的类推导出来,也需要包定义。
恕我直言,Spring 还有明显的改进空间,即提供一个仅采用逗号分隔的类列表的注释。因此,无需扫描包,只需列出您想要初始化的 bean 类即可。通过构造函数进行 Autowiring 可能仍然存在一些棘手的问题。
最佳答案
该功能在 Spring 4.3 中实现(尚未发布)。
您可以在changelog中阅读更多相关信息。 (见6.1)
<小时/>已添加:
关于自动注册未注释的类,似乎有一种灵活的方法可以使用 @ComponentScan 注释来实现此目的。此注释允许您指定一组包含过滤器,这些过滤器在类上匹配时会自动注册为 bean。我实际上并没有尝试使用此过滤器使用更复杂的规则,并且似乎您有几个选项(查看 @ComponentScan 上的文档),但最简单的一个是这样的:
@Configuration
@ComponentScan(
value = "some.package.path",
includeFilters = {
@Filter(type = ASSIGNABLE_TYPE, value = {
MyClass1.class,
MyClass2.class,
MyClass3.class
})
})
public class WebConfig extends WebMvcConfigurerAdapter {
...
关于java - 不太冗长@Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37612387/
我有一些记录到标准输出的测试,我想根据 nose 运行的冗长程度更改我的测试脚本中的日志级别。 如何从正在运行的测试之一中访问 running nose 实例的详细信息? 最佳答案 这有点 hack,
我们正在尝试序列化一个对象树。虽然我们已经成功了。我希望找到一种方法来简化生成的 xml。 对象看起来像下面这样: public class RuleSet { public IEnumera
查看 git-config 变量和 git-pull 文档,我没有看到默认情况下使 git-pull pull 冗长的方法。有人知道方法吗? 最佳答案 并不是所有的配置参数都适用!但是您可以使用别名自
我有一个小型或中等规模的 F# 项目,15 个 *.fs 文件,大约 2000 行代码。编译突然有点慢,大约5秒。我想找出导致编译速度变慢的原因,但找不到像“详细”这样的 fsc 开关,导致它显示进度
许多 scikit-learn 函数都有一个 verbose 参数,根据他们的文档,“[c]控制详细程度:越高,消息越多”(例如,GridSearchCV)。 很遗憾,没有提供关于允许使用哪些整数(例
我正在尝试以旧方式运行 Rails 测试,即以点作为输出,但我认为我遗漏了一些东西。我找不到在哪里关闭冗长模式,每次我运行 rake 任务时,我都会得到一个测试描述列表,这些描述起初看起来不错,但最终
我是一名优秀的程序员,十分优秀!