Java Spring 工厂类 BeanFactoryAware基本使用 亲测

28 篇文章 0 订阅
10 篇文章 0 订阅

1. BaseFactory.java 实现 Spring工厂接口 BeanFactoryAware


import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.stereotype.Component;

@Component("baseFactory")
public class BaseFactory implements BeanFactoryAware {
    private BeanFactory beanFactory;

    public Object getService(String code) {
        return beanFactory.getBean(code);
    }

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }

}

2. SearchFacade.java指定业务接口类


public interface SearchFacade {
    String doSearching(String keywords);
}

3. 业务处理实现类(BaiduImpl.java, GoogleImpl.java, DuckduckgoImpl.java)


import org.springframework.stereotype.Service;

@Service("BAIDU")
public class BaiduImpl implements SearchFacade {
    @Override
    public String doSearching(String keywords) {

        System.out.println("搜索条件: " + keywords);

        /**
         * 在此处一般调用一些第三方接口或爬虫 等!
         * */
        return "百度!!";
    }

}

import org.springframework.stereotype.Service;

@Service("GOOGLE")
public class GoogleImpl implements SearchFacade {
    @Override
    public String doSearching(String keywords) {

        System.out.println("搜索条件: " + keywords);

        /**
         * 在此处一般调用一些第三方接口或爬虫 等!
         * */
        return "谷歌!!";
    }

}

import org.springframework.stereotype.Service;

@Service("DUCKDUCKGO")
public class DuckduckgoImpl implements SearchFacade {
    @Override
    public String doSearching(String keywords) {

        System.out.println("搜索条件: " + keywords);

        /**
         * 在此处一般调用一些第三方接口或爬虫 等!
         * */
        return "鸭鸭去!!";
    }

}

4. FactoryController.java


@Controller
public class FactoryController {
    @Autowired
    private BaseFactory baseFactory;

    @GetMapping("/test2")
    public @ResponseBody Map<String, String> test2() {
        final Map<String, String> result = new HashMap<>();

        /**
         * 调用接口实现类实例
         * */
        final SearchFacade baiduInterface = (SearchFacade) baseFactory.getService("BAIDU");
        final String searchingFromBaidu = baiduInterface.doSearching("世界你好!");
        result.put("BAIDU", searchingFromBaidu);

        final SearchFacade googleInterface = (SearchFacade) baseFactory.getService("GOOGLE");
        final String searchingFromGoogle = googleInterface.doSearching("世界你好!");
        result.put("GOOGLE", searchingFromGoogle);

        final SearchFacade duckduckgoInterface = (SearchFacade) baseFactory.getService("DUCKDUCKGO");
        final String searchingFromDuckduckgo = duckduckgoInterface.doSearching("世界你好!");
        result.put("DUCKDUCKGO", searchingFromDuckduckgo);
        return result;
    }

}

  • http://127.0.0.1:8080/test2

{
	"DUCKDUCKGO": "鸭鸭去!!",
	"BAIDU": "百度!!",
	"GOOGLE": "谷歌!!"
}

如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值