有时我们需要创建一些特定功能的bean,该如何做呢?

1.创建实现FactoryBean的工厂

  1. public class ProxyFactoryBean<T> implements FactoryBean<T> {
  2. private Class<T> proxyInterface;
  3. @Autowired
  4. private QrpcProxy qrpcProxy;
  5. public ProxyFactoryBean() {
  6. }
  7. public ProxyFactoryBean(Class<T> proxyInterface) {
  8. this.proxyInterface = proxyInterface;
  9. }
  10. @Override
  11. public T getObject() {
  12. return qrpcProxy.create(proxyInterface);
  13. }
  14. @Override
  15. public Class<?> getObjectType() {
  16. return this.proxyInterface;
  17. }
  18. @Override
  19. public boolean isSingleton() {
  20. return true;
  21. }
  22. }

2.在xml配置bean

  1. <bean id="testService" class="com.qrpc.server.utils.ProxyFactoryBean">
  2. <constructor-arg value="com.qrpc.api.facade.TestService"/>
  3. </bean>

3.使用

  1. @RestController
  2. public class TestController {
  3. @Autowired
  4. private TestService testService;
  5. @GetMapping(BASE_GETSTRING)
  6. public String getString() {
  7. return testService.getString();
  8. }
  9. }