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

哈尔滨服务好的建站方案忻州网站制作

哈尔滨服务好的建站方案,忻州网站制作,设计师需要了解的网站,网页设计与网站建设 入门必练文章目录 一、介绍二、演示环境三、自定义banner1. 文本2. 图片3. placeholder占位符4. 关闭banner 四、源码分析1. 关闭banner2. banner模式3. banner打印器4. 打印banner① 获取banner② 打印banner 5. 版本号占位符的解析器6. 文本格式占位符的解析器7. 应用标题占位符的解析… 文章目录 一、介绍二、演示环境三、自定义banner1. 文本2. 图片3. placeholder占位符4. 关闭banner 四、源码分析1. 关闭banner2. banner模式3. banner打印器4. 打印banner① 获取banner② 打印banner 5. 版本号占位符的解析器6. 文本格式占位符的解析器7. 应用标题占位符的解析器 五、总结 一、介绍 Banner即横幅的意思我们在庆祝某些事情时有些显眼包总会是拉个横幅以表明意图。 在我们启动springboot项目时springboot往往也会打印出一个默认的横幅该横幅中包含了一些信息如springboot版本号等如下图所示。 既然有默认的当然springboot也允许我们对banner进行自定义设置如将banner设置为文本、图片甚至关闭banner的输出。如下所示 是否略显炫酷下面我们来介绍如何自定义banner并通过源码进行分析。 二、演示环境 本演示项目的环境如下 java1.8springboot2.4.3 三、自定义banner 1. 文本 当我们需要自定义文本banner时只需要在类路径classpath下新建一个文件文件名为banner.txt(springboot默认)然后编辑作为banner的文本即可如下所示。 此时输出如下 如果不使用springboot默认的banner文件名则需要通过在配置文件中配置spring.banner.location如下所示 如果文件的编码不是UTF-8则可以在配置文件中通过spring.banner.charset配置字符集如下所示 spring:banner:location: fozuBanner.txtcharset: UTF-322. 图片 除了文本banner外springboot还允许我们自定义图片banner。并且如果两种banner同时存在则先输出图片banner、再输出文本banner。 默认地springboot将从classpath类路径下获取banner.gif、banner.jpg、banner.png作为图片banner。当然也可以通过在配置文件中配置spring.banner.image.location来指定图片的位置。 在输出图片banner时springboot将会把图片转化成ASCII艺术画输出而非无脑式地将图片输出。 如下图所示我们在类路径下添加图片并将其命名为banner.png。 启动项目后的输出如下 3. placeholder占位符 springboot允许我们在banner中使用${}格式的占位符但仅限于文本banner。内置的占位符有应用版本、springboot版本、字体样式、应用名。下面我们一一介绍。 应用版本 占位符为${application.version} 或 ${application.formatted-version}。 springboot允许我们在文本banner中添加应用版本号。通过在文本banner中添加${application.version}或${application.formatted-version}时springboot从MANIFEST.MF中读取Implementation-Version的值。 例如MANIFEST.MF中Implementation-Version的值为1.0.0则${application.version}得到的值为1.0.0${application.formatted-version}的值为v1.0.0多了个前缀v。 注意该信息只有通过Spring Boot launchers方式启动时才会生效。 springboot版本 占位符为${spring-boot.version} 或 ${spring-boot.formatted-version}。 获取当前项目使用的springboot的版本号同样的后者会给前者获取的值添加前缀v。如下图所示 字体样式 占位符为${AnsiColor.NAME}、${AnsiBackground.NAME}、${AnsiStyle.NAME}。 当我们使用${AnsiColor.RED}时打印的字体将变成红色使用${AnsiBackground.YELLOW}时背景颜色将变成黄色使用${AnsiStyle.BOLD}时将打印粗体。如下图所示 应用名 占位符为${application.title}。 springboot允许我们在文本banner中添加应用名称。通过在文本banner中添加${application.title}时springboot从MANIFEST.MF中读取Implementation-Title的值。 例如MANIFEST.MF中Implementation-Title的值为MyApp则Implementation-Title得到的值为MyApp。 注意该信息只有通过Spring Boot launchers方式启动时才会生效。 4. 关闭banner 我们介绍了文本banner、图片banner后接下来介绍如何关闭banner关闭bannner后在项目启动时便不再输出banner。 方法当然也很简单对于关闭bannner功能springboot在SpringApplication类中提供了响应的方法setBannerMode()来关闭banner。下面对我们的主启动类进行修改。 修改前 public static void main(String[] args){SpringApplication.run(BannerApplication.class, args); }修改后 public static void main(String[] args){SpringApplication springApplication new SpringApplication(BannerApplication.class);// 将bannner的模式设置为off即关闭springApplication.setBannerMode(Banner.Mode.OFF);springApplication.run(args); }启动项目 四、源码分析 我们知道springboot是通过SpringApplication类中的run()方法启动的在该方法中调用printBanner()方法打印banner如下图所示 下面我们进入该方法 1. 关闭banner 在printBanner()方法中我们首先看到对bannerMode的判断如果是OFF则直接返回null。 if (this.bannerMode Banner.Mode.OFF) {return null; }而前面我们在演示的时候提到过springboot提供了对应的方法。 public void setBannerMode(Banner.Mode bannerMode) {this.bannerMode bannerMode; }我们看一下Banner.Mode为何物 2. banner模式 Banner.Mode表示为Banner的模式springboot提供了三种模式OFF关闭、CONSOLE控制台、LOG日志文件。 springboot默认的banner模式为CONSOLE控制台。 3. banner打印器 在printBanner()方法中创建了banner打印器实例代码如下所示 private Banner printBanner(ConfigurableEnvironment environment) {// ...SpringApplicationBannerPrinter bannerPrinter new SpringApplicationBannerPrinter(resourceLoader, this.banner);// ... }在调用构造方法实例化打印器时传入资源加载器 和 兜底banner兜底banner的含义为如果项目中没有指定的文本banner或图片banner时则使用兜底banner如果兜底banner依然不存在最后才使用springboot默认banner。 springboot提供了设置兜底banner的方法 public void setBanner(Banner banner) {this.banner banner; }与设置banner模式相同在主启动类中设置一个自定义的banner该自定义banner必须实现Banner接口的printBanner()方法。 public static void main(String[] args){SpringApplication springApplication new SpringApplication(BannerApplication.class);springApplication.setBanner(new CustomBanner());springApplication.run(args); }4. 打印banner 在完成banner打印器的实例化以后就开始调用打印器的print()方法对banner进行打印了且打印器提供了两个重载的的print()方法分别用于日志模式和控制台模式。这两个重载方法的不同之处在第三个参数。如下所示 private Banner printBanner(ConfigurableEnvironment environment) {// ...if (this.bannerMode Mode.LOG) {return bannerPrinter.print(environment, this.mainApplicationClass, logger);}return bannerPrinter.print(environment, this.mainApplicationClass, System.out); }这两个重载方法的基本逻辑是相同的即获取banner、打印banner、返回结果。我们以控制台模式的print()方法为例。 Banner print(Environment environment, Class? sourceClass, PrintStream out) {// 获取bannerBanner banner getBanner(environment);// 打印bannerbanner.printBanner(environment, sourceClass, out);// 返回结果return new PrintedBanner(banner, sourceClass); }① 获取banner 我们进入getBanner()方法查看其实现 该实现逻辑也很清晰就是先后获取图片banner添加到banners中如果banners中存在banner则返回否则返回兜底banner如果兜底banner还不存在则返回默认banner。 获取图片banner 获取到的图片banner用ImageBanner对象表示。 获取文本banner 获取到的文本banner用ResourceBanner对象表示。 兜底banner 前面我们在介绍banner打印器时已经详细介绍过了。 默认banner 默认banner使用常量DEFAULT_BANNER表示为SpringBootBanner对象。如下所示 进入SpringBootBanner后发现发现我们再熟悉不过的默认banner原来藏在这里。 ② 打印banner 前面在getBanner()方法中获取到的banner集合被添加到Bannners中注意一下类Banners是Banner的子类在它实现的printBanner()方法中通过遍历内部的banner集合并调用printBanner()方法对不同的banner进行打印。 下面我们对不同类型bannner的打印逻辑进行分析 图片banner 图片banner被封装在ImageBanner对象中在打印图片banner时会对java.awt.headless的配置进行处理然后再调用其重载方法真正地输出图片banner。 下面我们点击重载printBanner()方法查看其真正输出图片banner的逻辑。 在该方法中从配置中获取图片banner的宽高等基本样式然后将其输出在输出过程中将图片转为ASCII艺术图。 文本banner 文本banner被封装在ResourceBanner对象中我们进入该类的printBanner()方法。 该方法逻辑为将文本banner按照配置文件中spring.banner.charset指定的字符集转换为对应的banner字符串然后获取用于解析${}形式的占位符的解析器集合利用解析器处理banner字符串中的占位符。最后将处理后的banner字符串输出。 下面我们看一下有哪些占位符解析器 从源码中我们看到有处理版本号的解析器、文本格式的解析器、应用标题的解析器。 5. 版本号占位符的解析器 获取版本号占位符的解析器是通过getVersionResolver()方法完成的如下图所示可以看到springboot内置给我们获取应用版本号和springboot版本号的占位符。 6. 文本格式占位符的解析器 获取文本格式占位符的解析器是通过getAnsiResolver()方法完成的。如下图所示可以看到内置了多种设置文本格式的方式。 下面我们以设置文本格式和文本颜色为例 文本格式 文本格式通过AnsiStyle设置所以我们点击其对应的AnsiStyle类发现我们可以设置的文本格式如下 文本颜色 文本颜色通过AnsiColor设置所以我们点击其对应的AnsiColor类发现我们可以设置的文本颜色如下 7. 应用标题占位符的解析器 获取应用标题占位符的解析器是通过getTitleResolver()方法完成的。如下图所示。 五、总结 优先级图片、文本banner 兜底banner 默认bannner文本banner可以添加内置的占位符如版本号、文本颜色、文本格式等。图片banner的打印是将图片转为ASCII艺术图后打印的。 纸上得来终觉浅绝知此事要躬行。 ————————————————我是万万岁我们下期再见————————————————
http://www.hkea.cn/news/14281609/

相关文章:

  • 网站建设 人性的弱点无线网被附近多个
  • 如何用个门户网站做销售电商网站开发实训心得
  • 有用织梦做的大网站吗wordpress发送大量邮件
  • 手机网站域名如何解析网站建设的七大主要目的
  • 有些网站勤换域名曲阜网站建设
  • 公司如何做网站宣传php网站开发技术文档
  • 备案期间怎么访问网站手机网站生成app客户端
  • 龙华网站建设主要工作沧州网页制作公司
  • 良品铺子的网站建设目标网站建设需要什么研究条件
  • 公司网站开发费能记研发费用哪个科目手机系统优化
  • 石铜路网站建设建筑木工招聘平台
  • 在线做网站上海网站推广排名
  • 会展相关网站的建设情况wordpress添加后台菜单
  • 网站流量分析论坛网站怎么做排名
  • 重庆建设安全员信息网站临沂做过网站的公司
  • 正规网站开发公司山东网站建设企业公司
  • 如何自建外贸网站中山精品网站建设讯息
  • 始兴建设局网站河南郑州网站建设公司
  • 快手等视频网站做推广安卓版wordpress
  • 杭州专业制作网站中国建设网站培训通知
  • 个人网站设计案例小程序开发平台官网
  • 公司网站重新备案wordpress发布网站
  • 做坑人网站二维码做网站需要多大的显存
  • 天水 网站建设 招聘一个公司可以做两个网站么
  • 微官网和微网站网站开发需要多钱
  • 网站建设 合肥深圳广告设计公司网站
  • 网站怎么做需要花钱吗濮阳开公司怎么找客户
  • 专门 做鞋子团购的网站广东网站建设科技
  • 旅游网站建设与翻译网站软件应用大全
  • 智慧团建官网pc端佛山做网站优化公司