1.父项目创建,【com.fdw.hibernate】
2.子项目创建,【com.fdw.study】【com.fdw.parent】
3.最终结构目录
4. 父工程build.gradle
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
中的配置 ,子工程能自动继承在这里配置的依赖
5. 父工程setting.gradle
rootProject.name = "hibbernatestudy"
include 'study','parent'
建立父子关系(很关键)
6.study项目的build.gradle文件
dependencies {
}
7.parent项目的build.gradle文件,parent项目依赖study项目
dependencies {
implementation project(':study')
}
8.parent项目配置后才能使用study项目的bean
现在这样直接启动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
9.在study项目中写一个controller接口类
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 !";
}
}
10.parent项目加上启动类,启动parent
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
11.结果展示