wsz66
V2EX  ›  Java

spring 项目打包后注解无法被自动注入

  •  
  •   wsz66 · Nov 6, 2019 · 4752 views
    This topic created in 2403 days ago, the information mentioned may be changed or developed.
    如题,有一个 spring 项目打包后注解无法被自动注入,使用 maven 进行打包的,但打包之后注解就扫描不到了,使用的编译器是 IDEA,请问有大佬抽空回答一下吗
    9 replies    2019-11-06 15:53:13 +08:00
    pengfei
        1
    pengfei  
       Nov 6, 2019   ❤️ 1
    猜一下, 如果 spring 主配置文件采用 java 类那种方式不谈,假如是 xml 配置文件的方式的话是不是打包的时候没有把 xml 塞到 jar 包里面, 打开 jar 包看下如果是的话 pom 文件在 resources 标签下增加 include 标签
    airfling
        2
    airfling  
       Nov 6, 2019   ❤️ 1
    解决方向两个,依赖包是否全部导入,第二个就是 1 楼的方向
    orzfanfan
        3
    orzfanfan  
       Nov 6, 2019
    你是在另外一个项目上依赖了这个 spring 项目,然后启动的时候发现注解无法被扫描?
    choiwanxy
        4
    choiwanxy  
       Nov 6, 2019
    springboot?
    xuanbg
        5
    xuanbg  
       Nov 6, 2019   ❤️ 1
    1、打包的时候包是不是没导入,jar 包解开来检查一下就知道了
    2、包的版本是不是有问题,同样 jar 包解开来看看
    3、包路径的问题,譬如你的项目里 Application 路径是 a.b.c 的话,是扫描不到路径是 a.b.d 下面的包或者类的。要把 Application 移到 a.b 下面才行
    wsz66
        6
    wsz66  
    OP
       Nov 6, 2019 via Android
    @choiwanxy spring

    @orzfanfan 对,依赖 jar 包
    @pengfei @airfling 谢谢,我看看
    @xuanbg 谢谢。我用的是 IDEA 的 maven 插件打包的,应该是配置文件没有加进去
    choiwanxy
        7
    choiwanxy  
       Nov 6, 2019
    jar 解压了,仔细看一下,不行 debug 一下吧。可能性还挺多吧。
    hantsy
        8
    hantsy  
       Nov 6, 2019
    project a 依赖 project b.
    在 a 的 Application 上加上 ComponentScan(b 的根包名)

    如:
    package project.a;
    @ComponentScan("project.b")
    public class DemoApplication{}
    orzfanfan
        9
    orzfanfan  
       Nov 6, 2019
    @wsz66 你可能需要看一下 springboot 的 starter ,我都是把 springboot 打包成 starter,提供一个入口,上面的项目的 spring 就能访问了,我不清楚你的项目是否用了 springboot,如果用了,可以去看看 springboot 的 starter 封装方式
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2892 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 14:09 · PVG 22:09 · LAX 07:09 · JFK 10:09
    ♥ Do have faith in what you're doing.