当前位置: 首页 > news >正文

网站管家今天新闻摘抄十条

网站管家,今天新闻摘抄十条,吴志祥最早做的网站是什么网站,如何使用爱站网文章目录 1.问题描述:2.解决方案一、创建聚合父工程二、创建子模块(module)三、编写子模块代码1.模块1(demo-one)2.模块2(demo-tow) 四、创建聚合模块 (demo-starter)1. …

文章目录

  • 1.问题描述:
  • 2.解决方案
    • 一、创建聚合父工程
    • 二、创建子模块(module)
    • 三、编写子模块代码
      • 1.模块1(demo-one)
      • 2.模块2(demo-tow)
    • 四、创建聚合模块 (demo-starter)
      • 1. starter聚合模块pom配置 (依赖子模块很重要)
    • 五、打包测试
    • 六、最后的最后 测试一下效果

1.问题描述:

最近遇到个需求,针对后端解耦模块较多的项目,想在云端启动时简洁些只启动一个jar文件的情景。
1)解耦较细多个子module一个项目下
2)只想打到一个包启动一次
3)原解耦架构不想打破、不想重构

2.解决方案

针对此问题spring原生自带处理方式,下面写个demo

一、创建聚合父工程

1.首先使用 Spring Initializr 来快速创建好一个Maven工程。然后删除无关的文件,只需保留pom.xml 文件。这里命名 demo-Project。
在这里插入图片描述
2.然后在 pom.xml 里面声明该父工程包含的子模块。(其它信息就不逐一讲述了,诸如继承SpringBoot官方父工程以及统一依赖管理 请查看下面的注释说明)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.16</version><relativePath/> <!-- lookup parent from repository --></parent><packaging>pom</packaging><groupId>com.example</groupId><artifactId>demo-Project</artifactId><version>0.0.1-SNAPSHOT</version><name>demo-Project</name><description>demo-Project</description><modules><module>demo-starter</module><module>demo-one</module><module>demo-tow</module></modules><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!--    <build>-->
<!--        <plugins>-->
<!--            <plugin>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
<!--            </plugin>-->
<!--        </plugins>-->
<!--    </build>--></project>

二、创建子模块(module)

分别调整它们的pom.xml 以继承上面的父工程。
例如demo-one模块的pom.xml 需要改造成这样:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>demo-Project</artifactId><version>0.0.1-SNAPSHOT</version><relativePath>../pom.xml</relativePath></parent><groupId>com.example</groupId><artifactId>demo-one</artifactId><version>0.0.1-SNAPSHOT</version><name>demo-one</name><description>demo-one</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><!--    <build>-->
<!--        <plugins>-->
<!--            <plugin>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
<!--            </plugin>-->
<!--        </plugins>-->
<!--    </build>--></project>

三、编写子模块代码

在这里插入图片描述
注:正常是控制层、业务层、数据层等的解耦,目前是简单多业务架构模式假设每模块里都有自己的service、entity、repo、service等层次代码只是demo简单写了。

1.模块1(demo-one)

启动类 :DemoOneApplication.java (demo-one)

package com.example.demoone;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoOneApplication {public static void main(String[] args) {SpringApplication.run(DemoOneApplication.class, args);}}

控制器:ConTeone.java (demo-one)

package com.example.demoone.controler;import com.example.demoone.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ConTeone {@AutowiredUser user;@PostMapping("/contest1")public String test1(){return "test1";}@PostMapping("/contest1/onebean")public User test2(){return user;}
}

javabean User类:

package com.example.demoone.bean;import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;import java.io.Serializable;@Data
@Component
@ConfigurationProperties(prefix = "user")
@JsonSerialize
public class User{String username;String password;
}

配置文件:application.yml (demo-one)

server:port: 8081user:username: adminpassword: admin
spring:profiles:active: true

2.模块2(demo-tow)

启动类 :DemoTowApplication.java (demo-tow)

package com.example.demotow;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoTowApplication {public static void main(String[] args) {SpringApplication.run(DemoTowApplication.class, args);}}

控制器:Contest.java (demo-tow)

package com.example.demotow.controler;import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Contest {@PostMapping("/contest2")public String testTow(){return "test2";}
}

配置文件:application.yml (demo-tow) 这个不配了没写特殊的东西,只是在demo-one里写了从yml配置好做演示。

四、创建聚合模块 (demo-starter)

创建聚合模块 它的pom.xml 以继承上面的父工程。代码为普通的spring-web的项目即可,拥有初始的 启动类即可。但是启动类需要开启包路径扫描。
要求:
1)开启包扫描;
2)要继承 子模块demo-one、demo-tow;
3)要有打包插件配置 spring-boot-maven-plugin;
4)其他子模块需要去掉打包插件 这很重要。

1. starter聚合模块pom配置 (依赖子模块很重要)

下图依赖了两个子模块。
在这里插入图片描述
下图的打包配置,最简单的配置即可,当然看项目而定 有复杂需求按自己实际配置即可。
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.16</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo-starter</artifactId><version>0.0.1-SNAPSHOT</version><name>demo-starter</name><description>demo-starter</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.example</groupId><artifactId>demo-one</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>com.example</groupId><artifactId>demo-tow</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.starter聚合模块开启包扫描 (很重要)
在这里插入图片描述
特别注意:如果子模块包路径和启动类的根路径一致,不加上述注解也可,我这就是一样的但是为了演示所以还是配置了。

五、打包测试

万事俱备直接打包测试即可了。

在父pom的项目路径下打包

mvn clean package

在这里插入图片描述

打出来的包 在 demo-starter所在的路径里,当然运行 install 在本地仓库找也可;发布制品库的话直接发布上去的也是 demo-starter;
在这里插入图片描述

六、最后的最后 测试一下效果

启动 demo-starter

java -jar .\demo-starter-0.0.1-SNAPSHOT.jar

在这里插入图片描述
demo-one的 返回User的接口
在这里插入图片描述
demo-one 的返回string的接口
在这里插入图片描述
demo-tow的返回string的接口
在这里插入图片描述

http://www.hkea.cn/news/265934/

相关文章:

  • 如何识别一个网站是否做的好谷歌关键词挖掘工具
  • 网站建设专家网店营销推广
  • 做试玩网站搜索引擎优化答案
  • 外贸家具网站百度引擎搜索网址
  • 公司网站的栏目设置肇庆seo优化
  • 如何制作一个论坛网站网络服务器配置与管理
  • 北京中国建设部网站有什么平台可以推广
  • flash网站优缺点厦门百度seo
  • 贵阳利于优化的网站百度搜索引擎推广步骤
  • 金色 网站 模板外链是什么
  • 网站有多难做如何做推广引流赚钱
  • 建设企业网站怎么样百度首页 百度
  • 热烈祝贺网站上线泉州seo代理计费
  • 网站平台建设意见长沙有实力seo优化
  • 深圳网站如何制作西安seo网站推广优化
  • 网站建设业务文案网站seo检测工具
  • 石家庄做外贸网站建设现在最好的营销方式
  • 兰州做网站公司有哪些html+css网页制作成品
  • 福州做网站的公司多少钱信息流优化
  • 群晖的网站开发百度客服怎么转人工
  • 制作网站项目流程无锡网站建设seo
  • 最好的开发网站建设价格如何搜索网页关键词
  • 做网站犯法了 程序员有责任吗网站建设合同
  • 建设部职称网站关键词优化营销
  • 做seo还要需要做网站吗百度热搜榜排行
  • 福建城市建设厅网站怎么推广一个网站
  • 机构网站建设需要交费吗关键词挖掘
  • 专业网站建设费用报价今日最新消息
  • 电商网站建设论文2022黄页全国各行业
  • 能源企业 网站建设网络营销的应用