plugins { id 'java' } allprojects { // 指定需要的插件 // 指定语言 apply plugin: 'java' //指定编辑器 apply plugin: 'idea' // 配置项目信息 group 'com.fdw' version '1.0.0' // 配置仓库 repositories { maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url "https://maven.aliyun.com/nexus/content/groups/public/" } mavenCentral() gradlePluginPortal() mavenLocal() } } // 配置子工程 subprojects { apply plugin: 'java' // 指定编译版本 sourceCompatibility = 1.8 targetCompatibility = 1.8 // 配置字符编码 tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } //配置子模块依赖 dependencies { // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web implementation 'org.springframework.boot:spring-boot-starter-web:2.6.6' // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter implementation 'org.springframework.boot:spring-boot-starter:2.6.3' implementation 'org.projectlombok:lombok:1.18.12' annotationProcessor 'org.projectlombok:lombok:1.18.12' } } tasks.named('test') { useJUnitPlatform() }
allprojects代码块:该代码块中的配置将适用于所有项目,包括根项目和所有子项目。可以在其中定义共享的配置和依赖项
subprojects代码块:该代码块中的配置将只应用于子项目,而不包括根项目。可以在其中设置子项目独有的配置或覆盖allprojects中的配置 ,子工程能自动继承在这里配置的依赖
rootProject.name = "hibbernatestudy" include 'study','parent'
建立父子关系(很关键)
dependencies { }
dependencies { implementation project(':study') }
现在这样直接启动parent项目的话,study里的Bean是无法通过@Autowired注解注入来被parent使用的,原因在于,虽然parent依赖了study项目,但项目启动时并未去加载study中的类,需要如下配置:
1.在study项目src>>main>>java目录下新建配置类DefultConfig.java,@ComponentScan选择所有要扫描注入的包
package com.fdw.study.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.fdw.study.controller") public class DefultConfig { }
2.在study项目src>>main>>resources目录下新建META-INF文件夹
3.在META-INF文件夹下新建spring.factories文件,填写步骤一中的配置类全限定名
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.fdw.study.config.DefultConfig
package com.fdw.study.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/hello") public String hello(){ return "hello world !"; } }
package com.fdw.parent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ParentApplication { @Autowired public static void main(String[] args) { SpringApplication.run(ParentApplication.class, args ); } }
application.yml配置端口8085