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

快速做网站公司报价如何做天猫网站

快速做网站公司报价,如何做天猫网站,龙轩导航,榆林网站优化Spring Boot 提供了一个插件 spring-boot-maven-plugin 把程序打包成一个可执行的jar包#xff0c;直接执行java -jar xxx.jar即可以启动程序 1、引用 spring-boot-maven-plugin插件 buildpluginsplugingroupIdorg.springframework.boot直接执行java -jar xxx.jar即可以启动程序 1、引用 spring-boot-maven-plugin插件 buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins /build 2、打包文件内部结构 1、BOOT-INF class项目代码 lib依赖jar包 2、META-INF程序入口 maven.xxx程序配置文件 MANIFEST.MF 3、org.springframework.boot.loader 3、MANIFEST.MF Manifest-Version: 1.0 Implementation-Title: sk-cloud-order-sc Implementation-Version: 1.0-SNAPSHOT Start-Class: com.sk.order.sc.app Spring-Boot-Classes: BOOT-INF/classes/ Spring-Boot-Lib: BOOT-INF/lib/ Build-Jdk-Spec: 1.8 Spring-Boot-Version: 1.4.3.RELEASE Created-By: Maven JAR Plugin 3.2.2 Main-Class: org.springframework.boot.loader.JarLauncher Main-Classorg.springframework.boot.loader.JarLauncher当我们使用java -jar xxx.jar启动jar包的时候通过调用JarLauncher#Main方法不是我们定义的Main方法。SpringBoot内部提供一个可用于执行SpringBootApplication的工具类这就是为什么打的包包含spring-boot-loader 4、JarLauncher源码查看 1、添加依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-loader/artifactIdversion2.7.8/version /dependency 2)、抽象Launcher类 用于启动应用程序分别有JarLauncher、WarLauncher、PropertiesLauncher实现类 public abstract class Launcher {private static final String JAR_MODE_LAUNCHER org.springframework.boot.loader.jarmode.JarModeLauncher;public Launcher() {}protected void launch(String[] args) throws Exception {if (!this.isExploded()) {JarFile.registerUrlProtocolHandler();}ClassLoader classLoader this.createClassLoader(this.getClassPathArchivesIterator());String jarMode System.getProperty(jarmode);String launchClass jarMode ! null !jarMode.isEmpty() ? org.springframework.boot.loader.jarmode.JarModeLauncher : this.getMainClass();this.launch(args, launchClass, classLoader);}protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception {Thread.currentThread().setContextClassLoader(classLoader);this.createMainMethodRunner(launchClass, args, classLoader).run();}//Archive相关代码 } 3、Archive归档文件获取Mainifest等URL路径jar包中包含jar或者jar包中class文件那么会使用 !/ 分隔开 public class JarFileArchive implements Archive {public URL getUrl() throws MalformedURLException {return this.url ! null ? this.url : this.jarFile.getUrl();}public Manifest getManifest() throws IOException {return this.jarFile.getManifest();} } 4、JarFilejar包封装文件 5、JarLauncher启动流程 JarLauncher#main - Launcher#launch -MainMethodRunner#run -获取manifest文件Start-Class类通过反射调用main方法 public class JarLauncher extends ExecutableArchiveLauncher {static final Archive.EntryFilter NESTED_ARCHIVE_ENTRY_FILTER (entry) - {return entry.isDirectory() ? entry.getName().equals(BOOT-INF/classes/) : entry.getName().startsWith(BOOT-INF/lib/);};public JarLauncher() {}protected JarLauncher(Archive archive) {super(archive);}protected boolean isPostProcessingClassPathArchives() {return false;}protected boolean isNestedArchive(Archive.Entry entry) {return NESTED_ARCHIVE_ENTRY_FILTER.matches(entry);}protected String getArchiveEntryPathPrefix() {return BOOT-INF/;}public static void main(String[] args) throws Exception {(new JarLauncher()).launch(args);} }  Launcher#launch protected void launch(String[] args) throws Exception {if (!this.isExploded()) {JarFile.registerUrlProtocolHandler();}//自定义类加载器加载jar文件通过active的urls加载jar文件ClassLoader classLoader this.createClassLoader(this.getClassPathArchivesIterator());String jarMode System.getProperty(jarmode);//获取manifest文件的Start-Class类String launchClass jarMode ! null !jarMode.isEmpty() ? org.springframework.boot.loader.jarmode.JarModeLauncher : this.getMainClass();//调用Start-Class类类main方法this.launch(args, launchClass, classLoader); }protected void launch(String[] args, String launchClass, ClassLoader classLoader) throws Exception {Thread.currentThread().setContextClassLoader(classLoader);this.createMainMethodRunner(launchClass, args, classLoader).run(); }/* * 调用manifest文件Start-Class类mian方法 */ public class MainMethodRunner {private final String mainClassName;private final String[] args;public MainMethodRunner(String mainClass, String[] args) {this.mainClassName mainClass;this.args args ! null ? (String[])args.clone() : null;}public void run() throws Exception {Class? mainClass Class.forName(this.mainClassName, false, Thread.currentThread().getContextClassLoader());Method mainMethod mainClass.getDeclaredMethod(main, String[].class);mainMethod.setAccessible(true);mainMethod.invoke((Object)null, this.args);} }
http://www.zqtcl.cn/news/332892/

相关文章:

  • 设计logo网站侵权吗知乎一键做单页网站
  • 网站服务器有什么用做视频网站视频存放问题
  • 影评网站建设可以免费发布招聘网站
  • 富阳做兼职的网站正邦设计上海分公司
  • 网站漏洞解决办法投资
  • wordpress网站如何网页设计实训总结3000字大学篇
  • 用ps怎么做网站导航条wordpress 开启缩略图
  • 网上销售型的企业网站为什么要域名备案
  • 唐山网站建设方案优化国内酷炫网站
  • 国外网站备案吗网站做一样没有侵权吧
  • 谷歌怎么建网站ps中怎样做网站轮播图片
  • 汕头有没有做网站廊坊宣传片制作公司
  • 百度快速收录网站有些人做网站不用钱的 对吗
  • 如何规划一个网站网站建设预付费入什么科目
  • 北京做网站的好公司有哪些网站建设杭州缘择低价
  • 建设网站团队张掖响应式建站平台
  • 中国建设之乡是哪里网站优化连云港哪家强?
  • 网站建设报价是多少30号长沙封城最新消息
  • 常州专业网站建设费用电商推广技巧
  • 辽源市网站建设南通营销网站开发
  • 新站优化案例去韩国用什么地图导航
  • 宁波网站制作与推广WordPress怎么文章分类
  • mvc 做网站国内的搜索引擎有哪些
  • 设计视频网站腾讯云服务器网站域名备案
  • 网站建设费算费用还是固定资产镇赉县做网站的
  • 山西 旅游 英文 网站建设wordpress 设置登陆界面
  • 电商网站系统建设考试深圳网站建设培训哪家好
  • 工作室 网站项目策划书八篇案例
  • ui做网站流程建设统计网站进不去
  • 沧州网站建设优化公司网站改版