`
VerRan
  • 浏览: 459484 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

springboot学习 - hello world

阅读更多
引子:
       开始之前允许我介绍下我认识的spring,认识Spring是 从2007 年开始的,那时候spring without ejb 一书早已成名,基于对spring的好奇 看了这本书。那时候自诩是正统的java学习者,对spring有很多不屑,无论是从学习路径还是后来的工作需要,基本上是用j2EE那套 如EJB,JMS,JTA等,从而对j2EE的官方蓝皮书到相关的规范都有所了解,那时候对spring给我的感觉尽管简单但不正统,呵呵,感觉自己有点像朝代更迭后的老臣一般,是的,就是顽固,这个是思想上面的。 从具体使用上当时感觉spring只是通过各种整合和封装给开发人员带来了很多便利,当然最让自己感觉别扭的就是xml配置,原来我自己可以随意施展和调遣的对象,使用后必须先配置,这无形中失去了很多自由的空间。10年前的这种观念对我后续使用spring有很多影响,尽管后续通过那本书尝试了每个案例,以及后来项目中多多少少用了很多特性,总之没有提起我深入的兴趣,尽管购买了spring内幕一书 并对其内部有所了解,但总之未深入。10年后重新开始学习还是在春天,如同你的名字一般spring,这次或许是因为雨季你穿着“长靴”,引导(boot )我重新认识SpringBoot。
摘要:
     springboot 项目的启动原因 当前我还不甚了解,但从他提供的特性来看 促使我愿意重新学习和使用,先介绍下官方的描述:
 (1) Create stand-alone spring  applications  创建可独立运行的 spring 应用程序
 (2) Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)  内嵌tomcat,jetty   web容器,不需要发布war文件到容器里
 (3) Provide opinionated 'starter' POMs to simplify your Maven configuration   通过提供预置的启动器pom 来简化maven 配置
 (4)Automatically configure Spring whenever possible      无论何时只要可以都能够实现spring的自动配置,从而摆脱了xml的配置问题
 (5)Provide production-ready features such as metrics, health checks and externalized configuration   ,提供了多种服务于产品准备的特性,如 健康检查
 (6)Absolutely no code generation and no requirement for XML configuration  ,完全不需要代码生成,完全不需要xml配置
正是因为这些特性让我重燃信心,当然后有其与其他项目的无缝结合,如云,社交媒体 让我产生了很大的兴趣。对于初学的人来说可能很多特性不知为什么要有,或者现在也挺好的,基于此我说一下我之前针对这些特性是如何解决的,以及为什么要用这个。
(1) 独立运行的spring 程序, 对于部分应用需要单独运行特别是普通java 程序,如某些业务场景下需要一个定时任务定期在后台运行 ,此时程序不依赖于web容器,同时该应用引入了很多第三方jar包,之前我的做法是使用fatjar 这个插件来打包,这种方式会自动将关联的jar 解压成class然后再打成jar包。两者相比springboot的jar包要小很多,主要是其对关联jar的引入做了优化具体后续再研究单独写分析文章。
(2) 内嵌的web容器 ,如tomcat jetty ,这个应用场景主要是为了简便开发和调试,当然后续生产的部署也可以一站式解决,以前的方式就是开发完 打包部署到web容器,或者开发工具集成了web容器调试。应用场景,如需要快速的提供便于部署和使用的web应用,例如用于演示的应用 无需复杂的部署,以前的方案 如直接调用jetty的api通过程序直接启动,springboot此次将此方案做了无缝结合。
(3)通过提供预置的启动器pom 来简化maven 配置, 这个场景,主要是解决复杂的maven配置,使用的子项目越多涉及的依赖就越多,通过预制的启动期配置可以大大的简化maven配置。
(4)自动配置,这个是我此次重新学习的最关键点,无需那么多配置,让开发 自由,灵活 ,让我们只关注java代码。
(5)提供了多种服务于产品准备的特性,如 健康检查  ,这个场景还没有用,后面补充 大体看应该是针对应用的监控和检查,这个是很好的想法,后续不需要再使用第三方应用进行监控了。
实战:
    对于编程人员来说学习一样新的语言,框架,最开始想到的就是hello world,是的 此次旅程也从这里开始:
  1.   环境准备
            java1.8 maven3.3.9  gradle3 springboot2 ,下载链接可以自己百度,下载完毕后配置环境变量,同时验证结果 。
           这里列举下我的验证结果:
  1.   开始开发
          (1)  如 D盘创建springboot/helloworld  文件夹
          (2)  创建pom文件,这里主要是先引入springboot必须的一些依赖和插件,为了简便springboot提供了对应的父pom(spring-boot-starter-parent) ,这个也就是上面说的启动期简化pom配置的一个例子
下面先列出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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
    </parent>
    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <!-- Add Spring repositories -->
    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>
    如上的maven文件包含了 依赖,打包插件,仓库信息等,主要关注 spring-boot-starter-web,其他可以默认,因为只有引入 spring-boot-starter-web 后才可以使用web特性。
   (3) 创建controller 类
         创建 src/main/java/HelloWorld.java 
         代码如下:
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
public class HelloWorld {
  @RequestMapping("/")
   string home(){
      return "hello world";
    }

   public static void mian (String[] args)  throws Exception{
          SpringApplication.ruu(HelloWorld.class ,args);
    }
}
@RestController  定义这个类为Rest方式的控制类
 @RequestMapping("/")  定义请求路径 ,这个表示可以通过 localhost:端口/  直接访问这个控制类
的此方法
(4) 运行程序 使用命令 mvn spring-boot:run
      通过该命令启动应用程序,这时候springboot会自动启动内嵌的web容器(tomcat),并且通过8080端口打开,同时会将HelloWorld 这个控制类放到容器里。 
(5) 验证结果 
    通过浏览器打开  localhost:8080  ,页面显示 Hello World!
    
       
(6) 打包为可执行程序
     我们上面看到的运行结果,如果关闭掉控制台是无法一直执行的,同时在没有maven环境下也是无法执行的,现在来解决这个问题,方式是通过mvn package 打包。
    

 
(6)执行程序 ,打包完成后会出现一个target目录 ,进入此目录执行生成 jar文件(java -jar 命令)


 
验证结果和上面是一致的,现在这个jar包 在有java8(这个例子用java8开发的 ,保证与开发环境一致) 的环境下可以任意执行了。
 
  • 大小: 3.3 KB
  • 大小: 35.4 KB
  • 大小: 42.8 KB
分享到:
评论

相关推荐

    3、springboot--hello world

    在“3、springboot--hello world”这个主题中,我们将深入探讨如何使用Spring Boot构建一个简单的“Hello World”应用,以及涉及的相关知识点。 首先,Spring Boot的核心特性是自动配置。它通过“starter”依赖管理...

    springboot-helloworld.rar

    《SpringBoot HelloWorld初探》 在当今的Java开发领域,SpringBoot框架因其简化Spring应用的初始搭建以及开发过程而备受青睐。"springboot-helloworld.rar"这个压缩包,显然是一个入门级的示例,旨在帮助开发者快速...

    springboot-01-helloworld.rar

    本项目"springboot-01-helloworld"旨在帮助初学者快速入门SpringBoot,通过一个简单的HelloWorld程序,深入理解SpringBoot的核心理念和基本使用方法。 一、SpringBoot简介 SpringBoot是Pivotal团队提供的全新框架,...

    Springboot初探---FreeMarker 之 HelloWorld

    Springboot初探---FreeMarker 之 HelloWorld,很好的资源

    springboot-helloworld

    在"springboot-helloworld"项目中,我们将深入探讨SpringBoot的基础知识和实践应用。 首先,让我们从“helloworld”这个经典的起点开始。在SpringBoot项目中,创建一个简单的"Hello, World!"应用通常涉及到以下步骤...

    springboot-helloworld202010211506.zip

    springboot带多个环境配置文件小栗子,springboot带多个环境配置文件小栗子,springboot带多个环境配置文件小栗子,关于使用看https://blog.csdn.net/wang0907/article/details/109198198

    springboot-demo-helloworld-jetty.rar

    SringBoot的概述# SpringBoot解决上述Spring的缺点SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码...

    Web项目Springboot-HelloWorld-war包

    利用springboot开发的简易helloworld的war包,供测试使用

    Springboot-helloworld案例

    创建独立的 Spring 应用程序  嵌入的 Tomcat,无需部署 WAR 文件  简化 Maven 配置  自动配置 Spring  提供生产就绪型功能,如指标,健康检查和外部配置  开箱即用,没有代码生成,也无需 XML 配置。

    springboot-demo-helloworld

    Spring Boot 所选择的第三方库是经过考虑的,是比较适合产品开发的选择。...为快速进行开发,推荐你使用IDEA这类开发工具,它将大大提升你学习和开发的效率。 • 选择 Spring Initialize Spring提供的初始化项目的工具

    springboot-demo-helloworld-build-war

    SringBoot的概述# SpringBoot解决上述Spring的缺点SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码...

    springboot-demo-helloworld-mvc

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、...

    springboot-demo-helloworld-docker.rar

    SringBoot的概述# SpringBoot解决上述Spring的缺点SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码...

    springboot-demo-helloworld-undertow.rar

    SringBoot的概述# SpringBoot解决上述Spring的缺点SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码...

    加深难度-对标大厂SpringBoot高级应用特训 SpringBoot开发实践与高级应用

    ├─SpringBoot-01-HelloWorld.rar ├─SpringBoot-02-Config-02.rar ├─SpringBoot-02-Config.rar ├─SpringBoot-03-Logging.rar ├─SpringBoot-04-Web-ThymeLeaf.rar ├─SpringBoot-05-Data-jdbc.rar ├─...

    springBoot-Test (一) Hello world

    在"springBoot-Test (一) Hello world"这个主题中,我们将探讨SpringBoot的起步过程以及如何实现一个简单的“Hello World”程序。 首先,我们需要在项目中引入SpringBoot的起步依赖(Starter Dependency)。...

Global site tag (gtag.js) - Google Analytics