![](/img/trans.png)
[英]How to create bean using @Bean in spring boot for abstract class
[英]How to create a bean remotely without changing the actual class in Spring Boot?
我的要求是@Autowire
常规Java类而不更改它。 我看到的解决方案是通过使用@Component
或@Service
注释该类,但是我无法更改实际的类。 我还有其他方法可以做到吗? 谢谢你的帮助。
您可以使用以下方法创建一个bean:
@Component
, @Service
@Controller
, @Repository
@Controller
, @Repository
...) 因此,您可以轻松使用前两种方法。 例如,您可以使用带有@Configuration
注释的类:
用@Configuration注释对类进行注释表示JavaConfig将使用该类作为bean定义的源 。
这是代码
@Configuration
public class MyConfig {
@Bean
public MyBean getMyBean() {
MyBean myBean = ...
return myBean;
}
}
...
@Component
public class AnotherClass {
@Autowired
private MyBean myBean;
...
}
更新了答案,并提供了与问卷评论相关的信息:
如果不能使用构造函数,则可以使用以下方法获取类的等距形式:
@Bean
public MyBean getMyBean() {
MyBean myBean = MyBean.getInstance();
return myBean;
}
或者您可以在类中直接使用它而不使用@Autowired
注释,因为不是为您实例化MyBean
实例的spring而是getInstance
方法。 该代码将变为:
@Component
public class AnotherClass {
// Creates (or get) the instance
private MyBean myBean = MyBean.getInstance();
...
}
注意:如果您是TDD的拥护者,则第一种解决方案生成的代码要比第二种解决方案更易于测试,因为它没有直接引用静态getInstance
方法的getInstance
因此更易于生成模拟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.