spring cloud 拆分项目时@autowired 怎么也注入不进来

在公司闲暇时间把公司的项目拆分,准备尝试用dubbo的拆分方式来:让controller层做消费者,service层大包为jar添加依赖,实现和数据库层做生产者,eureka做服务注册,其他的rcsssCloud-security、rcsssCloud-utils、rcsssCloud-model、rcsssCloud-config、打包为jar作为服务依赖。

经过一天的拆分过后,生产者能够正常的启动,但是消费者,@autowired注解的接口怎么都注入不进来,生产者能起动,为什么消费者不行?

       后来想了想,在spring mvc 的配置文件里面有这个配置 就是扫描包下的注解用的

        <!-- 扫描该路径所有注解 -->
<context:component-scan base-package="com.ambition.rcp" />  在看看spring boot 的yml配置文件中没有这种配置,spring boot 其实是扫描“application”所在包及其子包,

生产者里面是有service、dao这些组件的所以能够扫描到,而消费者是只有controller,而接口都是被打成jar包依赖过来的,为了让spring boot能够注入例如这样配置的

   @Autowired
    private EhCacheService        ehCacheService;

需要手动添加   @ComponentScan(basePackages = { "com.ambition.rcsss.service" })

@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan(basePackages = { "com.ambition.rcsss.service" })
public class ApplicationClient extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(ApplicationClient.class);
    }


    public static void main(String[] args) {


        SpringApplication.run(ApplicationClient.class, args);
    }

      
  然后启动项目,解决了

 拆分过后,发现spring cloud不像dubbo那样把service接口暴露到zookeeper中,提供给消费者,而是每个子项目都是独立的项目,通过restful api调用,所有上面说的让controller层做消费者是有问题的,每一个应用应该能完成一个独立的功能。

这次拆分让我明白,动手才会发现问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值