Spring Boot 菜鸟教程 1 HelloWorld

SpringBoot由Pivotal团队提供,旨在简化Spring应用搭建与开发流程。支持独立Spring应用创建、内嵌Servlet容器、简化Maven配置等功能。本文介绍SpringBoot核心概念、项目结构及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GitHub

src="//ghbtns.com/github-btn.html?user=je-ge&repo=spring-boot&type=watch&count=true" scrolling="0" width="110" height="20">

技能要求

  • 最好对Spring有一定认识
  • 最好对Maven有一定认识

简介

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

功能
  • 创建独立的Spring applications
  • 能够使用内嵌的Tomcat, Jetty or Undertow,不需要部署war
  • 提供starter pom来简化maven配置
  • 自动配置Spring
  • 提供一些生产环境的特性,比如metrics, health checks and externalized configuration
  • 绝对没有代码生成和XML配置要求

开篇

  • 如果你用过Spring JavaConfig的话,会发现虽然没有了xml配置的繁琐,但是使用各种注解导入也是很大的坑,
  • 然后在使用一下Spring Boot,你会有一缕清风拂过的感觉,
  • 最后真是爽的不得了。。。

项目结构图

这里写图片描述

核心注解类说明

@RestController

就是@Controller+@ResponseBody组合,支持RESTful访问方式,返回结果都是json字符串

@SpringBootApplication

就是@SpringBootConfiguration+@EnableAutoConfiguration+
@ComponentScan等组合在一下,非常简单,使用也方便

@SpringBootTest

Spring Boot版本1.4才出现的,具有Spring Boot支持的引导程序(例如,加载应用程序、属性,为我们提供Spring Boot的所有精华部分)
关键是自动导入测试需要的类。。。

配置文件pom.xml

<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.jege.spring.boot</groupId>
    <artifactId>spring-boot-hello-world</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-hello-world</name>
    <url>http://maven.apache.org</url>

    <!-- 公共spring-boot配置,下面依赖jar文件不用在写版本号 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <!-- 自动包含以下信息: -->
        <!-- 1.使用Java6编译级别 -->
        <!-- 2.使UTF-8编码 -->
        <!-- 3.实现了通用的测试框架 (JUnit, Hamcrest, Mockito). -->
        <!-- 4.智能资源过滤 -->
        <!-- 5.智能的插件配置(exec plugin, surefire, Git commit ID, shade). -->
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- spring boot 1.x最后稳定版本 -->
        <version>1.4.1.RELEASE</version>
        <!-- 表示父模块pom的相对路径,这里没有值 -->
        <relativePath />
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <!-- web -->
        <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>
            <!-- 只在test测试里面运行 -->
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <finalName>spring-boot-hello-world</finalName>
        <plugins>
            <!-- jdk编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

启动类Application

package com.jege.spring.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author JE哥
 * @email 1272434821@qq.com
 * @description:spring boot 启动类
 */

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

}

控制器HelloWorldController

package com.jege.spring.boot.hello.world;

import java.util.Arrays;
import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author JE哥
 * @email 1272434821@qq.com
 * @description:看看spring-boot的强大和方便
 */
@RestController
public class HelloWorldController {

  @RequestMapping("/hello1")
  public String hello1() {
    return "Hello World";
  }

  @RequestMapping("/hello2")
  public List<String> hello2() {
    return Arrays.asList(new String[] { "A", "B", "C" });
  }
}

测试类HelloWorldControllerTest

package com.jege.spring.boot.hello.world;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import org.junit.Before;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

/**
 * @author JE哥
 * @email 1272434821@qq.com
 * @description:以Mock方式测试Controller
 */
@SpringBootTest
public class HelloWorldControllerTest {

  private MockMvc mockMvc;

  @Before
  public void setUp() throws Exception {
    mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
  }

  @Test
  public void getHello() throws Exception {
    mockMvc.perform(MockMvcRequestBuilders.get("/hello1").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
    .andExpect(content().string(equalTo("Hello World")));
  }

  @Test
  public void getHello2() throws Exception {
    mockMvc.perform(MockMvcRequestBuilders.get("/hello2").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk())
    .andExpect(content().string(equalTo("[\"A\",\"B\",\"C\"]")));
  }

}

运行

运行Application的main方法,打开浏览器:
http://localhost:8080/hello1
输出Hello World
http://localhost:8080/hello2
输出[“A”,”B”,”C”]

运行HelloWorldControllerTest
以Mock方式测试Controller

源码地址

https://github.com/je-ge/spring-boot

如果觉得我的文章或者代码对您有帮助,可以请我喝杯咖啡。
您的支持将鼓励我继续创作!谢谢!
微信打赏
支付宝打赏

<think>嗯,用户现在问的是“JAVA开发快速入门”,我得想想怎么回答。首先,用户可能是一个刚开始学习编程的新手,或者有其他语言经验想快速上手Java的人。他们需要的是简明扼要的步骤,重点突出,不要太多复杂的细节,但要覆盖到必要的知识点。 先回顾一下用户之前的提问,他们之前问过关于安卓通过root权限获取屏幕内容,所以可能对移动开发有一定兴趣,但现在的问题更基础,是Java入门。可能需要考虑到他们后续可能转向Android开发,所以基础部分要打好。 用户需求是快速入门,所以应该分步骤,结构清晰。可能包括环境搭建、基础语法、面向对象、常用类库、工具使用、学习资源等。要避免冗长,每个部分给出关键点,并提供示例代码,这样用户能马上动手实践。 还要注意用户可能没有编程经验,所以术语要解释清楚,比如JVM、JDK、IDE等。同时,代码示例要简单易懂,比如第一个程序“Hello World”,然后逐步深入。 另外,用户可能需要知道学习路径,比如先学什么,再学什么,如何逐步深入。可能还要推荐一些资源,比如书籍、在线教程、社区,帮助他们在学习过程中找到支持。 考虑到用户可能有时间限制,想快速掌握Java的核心内容,所以需要强调重点,比如面向对象、集合框架、异常处理、IO操作等,这些都是Java开发中常用的部分。同时,工具方面,Maven和Git是项目管理和版本控制的基础,应该提到。 最后,学习建议部分要鼓励实践,多做项目,参与社区,这样能巩固知识。还要提醒他们Java生态庞大,持续学习很重要,比如框架和新技术。 需要检查回答是否符合之前系统级指令的要求,比如数学公式用$...$,但Java入门可能用不到太多数学,这部分可能不涉及。结构是否清晰,分步骤,帮助用户逐步解决问题。使用中文,语法正确,没有Markdown格式,符合用户可见层的要求。 可能还需要注意代码示例的正确性,比如Hello World的类名和文件名一致,避免新手常见的错误。同时,面向对象的例子要简单,比如学生类的定义和使用,展示封装、继承、多态的概念。 最后,确保回答真实可靠,不误导用户,推荐的学习资源是权威或广泛认可的,比如《Java核心技术》、菜鸟教程等。总体结构要逻辑清晰,从环境搭建到基础语法,再到进阶内容,最后工具和资源,帮助用户系统化学习。</think>以下是Java开发的快速入门指南,采用**分步实践+核心要点**的架构,帮助你在最短时间内掌握Java开发的核心能力: --- ### 一、开发环境搭建(5分钟) 1. **JDK安装**: - 下载[JDK 17](https://www.oracle.com/java/technologies/downloads/)(长期支持版本) - 配置环境变量: ```bash # Windows示例 JAVA_HOME = C:\Program Files\Java\jdk-17.0.1 Path += %JAVA_HOME%\bin ``` 2. **IDE选择**: - 推荐[IntelliJ IDEA](https://www.jetbrains.com/idea/)(社区版免费) - 备选:Eclipse或VS Code + Java插件 --- ### 二、基础语法速成(核心20%知识点) #### 1. 第一个程序 ```java public class HelloWorld { // 类名必须与文件名一致 public static void main(String[] args) { // 程序入口 System.out.println("Hello Java!"); // 输出语句 } } ``` #### 2. 关键语法点 ```java // 变量与数据类型 int age = 25; // 基本类型 String name = "张三"; // 引用类型 // 流程控制 if (score >= 60) { System.out.println("及格"); } else if (score >= 40) { System.out.println("补考"); } else { System.out.println("重修"); } // 循环结构 for (int i=0; i<5; i++) { // 传统for循环 System.out.println(i); } int[] numbers = {1,2,3}; for (int num : numbers) { // 增强for循环 System.out.println(num); } ``` --- ### 三、面向对象编程(OOP核心) #### 1. 类与对象 ```java public class Student { // 字段(属性) private String name; private int age; // 构造方法 public Student(String name, int age) { this.name = name; this.age = age; } // 方法 public void study() { System.out.println(name + "正在学习"); } } // 使用示例 Student stu = new Student("李四", 20); stu.study(); ``` #### 2. 面向对象三大特性 1. **封装**:通过`private`字段和`getter/setter`控制访问 2. **继承**:`class Dog extends Animal` 3. **多态**:父类引用指向子类对象`Animal a = new Dog()` --- ### 四、必备类库 1. **集合框架**: ```java List<String> list = new ArrayList<>(); // 动态数组 Map<String, Integer> map = new HashMap<>(); // 键值对存储 ``` 2. **异常处理**: ```java try { FileReader file = new FileReader("test.txt"); } catch (FileNotFoundException e) { System.out.println("文件未找到"); } finally { // 清理资源 } ``` 3. **IO操作**: ```java // 文件读写 Files.write(Path.of("data.txt"), "内容".getBytes()); String content = Files.readString(Path.of("data.txt")); ``` --- ### 五、开发工具链 1. **构建工具**:Maven(项目依赖管理) 2. **版本控制**:Git基础命令 ```bash git init git add . git commit -m "first commit" ``` --- ### 六、学习路径建议 1. **新手阶段**(2周): - 掌握基础语法 - 完成50个编程练习(如:计算器、学生管理系统) 2. **进阶阶段**(1个月): - 深入理解集合框架 - 学习多线程编程 - 掌握网络编程基础 3. **项目实战**(推荐方向): - 控制台应用:图书馆管理系统 - Web开发:Spring Boot构建API - 桌面应用:JavaFX小工具 --- ### 七、推荐学习资源 1. **书籍**: - 《Java核心技术 卷Ⅰ》(原书第12版) - 《Effective Java》(最佳实践指南) 2. **在线教程**: - [菜鸟教程-Java](https://www.runoob.com/java/java-tutorial.html) - [B站-狂神说Java](https://space.bilibili.com/95256449) 3. **开发社区**: - Stack Overflow(问题解决) - GitHub(开源项目学习) --- ### 学习建议: 1. **代码量优先**:初期每天保证200行有效代码 2. **即时反馈**:使用`JUnit`编写单元测试验证代码 3. **项目驱动**:每个阶段完成1个完整项目 4. **规范养成**:从开始就遵守命名规范(类名首字母大写,变量小驼峰) Java作为企业级开发的主流语言,其生态包含Spring全家桶、Android开发、大数据处理等方向,掌握基础后可选择细分领域深入。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值