在多模块的项目中,有时候需要引入公共类,在pom文件中引入依赖:
<!-- 公共模块 -->
<dependency>
<groupId>com.suyongxiao</groupId>
<artifactId>tool</artifactId>
<version>0.0.1</version>
</dependency>
但是引入后,公共模块的注解不生效,如自定义注解,甚至@Autowired等都不起作用。
解决方案如下:
- 1.通过包扫描
在application启动类的注解上,scanBasePackages ,这个注意要加上自己本身的路径
@SpringBootApplication(scanBasePackages = {"com.example"})
- 2.使用@import注解手动导入需要装载的类
package org.authentication.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
* 此类用于导入公告包(tool)的自定义切面
*
* @author 放飞的承诺
* @since 2021-09-03
* */
@Import({
//这里就是填写需要装载的类
org.annotations.HttpLogsAspect.class,
org.annotations.SqlOperaLogsAspect.class,
org.annotations.AsyncLogs.class
})
@Configuration
public class ImportAspectConfig {
}
- 3.推选解决的方案
application启动类默认扫描它自己下面的包,所以不要把application.java放到最顶层,参考下图的目录结构进行创建就可以扫描到