SpringBoot项目搭建一 -- 个人博客

Spring Boot入门程序

使用 Maven 创建一个Spring Boot项目

第一步:打开IDEA,new --> project --> new project -->Maven

在这里插入图片描述

注意:不要选择下面的Maven Archetype,这时创建Maven的模板。

此时创建的项目已经有各种预先创建好的文件夹了,方便后续使用。

第二步:修改pom…xml文件

如果像我一样第一次第一步选择了Maven Archetype,那么这一步就会出错。

修改如下:

添加代码

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
</parent>
...
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
</dependencies>

在这里插入图片描述

第三步:编写主程序启动类

在src\main\java底下可以自己创建一个Demo作为启动入口

编写代码:

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

import javax.swing.*;

@SpringBootApplication
public class Chapter01Application {
    public static void main(String[] args) {
        SpringApplication.run(Chapter01Application.class, args);	//与第一个参数与类名一致
    }
}

在这里插入图片描述

这一步在@SpringBootApplication可能会遇到报错信息,提示找不到符号’SpringBootApplication’,这时尝试一下重新加载,右键主目录 --> 最底下有个Maven --> reload project

在这里插入图片描述

第四步:在主程序启动类的同级目录下创建一个新包’HelloController’,然后编写一段代码

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello Spring Boot";
    }
}

在这里插入图片描述

第五步:返回主程序启动类,run或者Debug

这一步如果发生报错信息: ERROR 23240 --- [ main] o.s.boot.SpringApplication
那么就是JDK版本太高导致的不兼容,这时候在 file --> Project Structure 里尝试把SDK换成JDK1.8,注意要看JDK后面括号里的版本号,千万别是17.xxx的。如果还是不行,尝试卸载高版本的JDK。然后修改pom.xml,将中间数字改成8(JDK1.8)

<properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

如果成功的话,下面这样:

在这里插入图片描述

然后打开浏览器:http://localhost:8080/hello,就可以看到hello语句了。

在这里插入图片描述

使用 Spring Initializr 创建一个Spring Boot项目

在这里插入图片描述

在这里插入图片描述

前面步骤和 Maven 创建差不多,在 Maven 创建步骤后

注意:这里如果需要选择版本的SpringBoot可以去CSDN找一下方法,我这里要用2.1.3.RELEASE,先随便选一个版本,然后把dependencies都注释,然后按 Maven 创建时的pom.xml配置,最后 reload project 就可以用了。

第一步:先将pom.xml改成按 Maven 创建时的改,然后在pom.xml再添加一个测试类,用来单元测试

<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<version>RELEASE</version>
			<scope>test</scope>
</dependency>

完整配置:

<?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.1.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>chapter01</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>chapter01</name>
	<description>chapter01</description>
	<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>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<version>RELEASE</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<version>RELEASE</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

第二步:打开test文件夹下的 Chapter01ApplicationTests.java 文件,编写测试代码

package com.example.chapter01;

import com.example.chapter01.controller.HelloController;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)    //加载Springboot注解
@SpringBootTest     //加载Springboot上下文环境
class Chapter01ApplicationTests {

    @Test
    void contextLoads() {
    }

    @Autowired
    private HelloController helloController;

    @Test
    public void helloController(){
        String hello = helloController.hello();
        System.out.println(hello);
    }
}

第三步:Debug 测试方法public void helloController()

结果如下:

在这里插入图片描述

热部署

第一步:pom.xml 导入热部署依赖

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
</dependency>

第二步:setting --> compiler --> 勾选 Build project automatically(自动编译)

第三步:ctrl + alt + shift --> register --> 勾选 compiler automake when app running

注意:在2021以后的IDEA版本是没有这个选项的,移动到了 setting --> addvance setting --> compiler 底下勾选

在这里插入图片描述

第四步:热部署测试,运行主程序启动类,浏览器打开http://localhost:8080/hello

在这里插入图片描述

然后在 HelloController 中修改返回信息,将“hello”改为“你好”,回到浏览器刷新页面发现显示信息更换

在这里插入图片描述

注意:如果刷新没有用,回到IDEA,最下方工具栏底部会多出一个 Auto Build,到里面点点看 在代码区以外随便找个地方点一下,应该是让其脱离编写状态,然后才能编译。

Spring Boot 自定义配置文件

有两种配置文件,分别是 .propertie.yaml,两者在语法上不同。

使用 PropertiesResource 配置

第一步:在 resource 目录下创建 properties bundle 文件,命名为 test,resource 目录就是 classpath

第二步:在主程序启动类目录下创建 一个 domain 的包和 MyProperties.java 文件,编写代码

package com.example.chapter01.domain;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:test.properties")    //classpath是src\main\resources
@EnableConfigurationProperties(MyProperties.class)
@ConfigurationProperties(prefix = "test")
public class MyProperties {
	private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "MyProperties{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

注意:如果提示没有 SpringBoot 的 Configuration 之类的信息,打开它的网站,找到以下代码加入 pom.xml 文件,然后更新maven(改动后出现小浮窗由刷新按钮)。

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
</dependency>

IDEA技巧:创建来个变量 id 和 name 后,右键该区域,选择 generate --> setter and getter --> 选中两个变量,就会自动生成 set 和 get 方法,toString() 同样。

第三步:编写测试类,在之前的测试类中添加以下代码

@Autowired
private MyProperties myProperties;
    
@Test
public void myProperties(){
        System.out.println(myProperties);
}

然后 Debug 这个方法,结果如下:

在这里插入图片描述

注意:如果 Debug 结果中文全部显示 “???” 或者乱码,那么到 setting 中搜索 encodeing,将所有设置改为utf-8

在这里插入图片描述

两种管理的 bean 方法
使用 ImportResource 加载XML配置文件

第一步:在主程序启动类同目录下创建一个 config 包和一个 MyService.java 文件

第二步:在 resource 目录下创建 beans.xml 文件,添加以下代码:

<bean id="myService" class="com.example.chapter01.config.MyService"></bean>

注意:如果弹出提示有未认证的信息,跟着提示做,不做也行

第三步:将 beans.xml 引入主程序启动类

@ImportResource("classpath:beans.xml")
@SpringBootApplication
public class Chapter01Application {

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

}

第四步:和之前一样编写对应测试方法,该方法测试是否存在 bean myService

 	@Autowired
 	private ApplicationContext applicationContext;
 
     @Test
    public void iocTest(){
        System.out.println(applicationContext.containsBean("myService"));
    }

Debug结果为true:

在这里插入图片描述

使用 Congratulation 自定义配置类

与上一种方法都是为了将 MyService 做成bean,上一种方法采用的是 Spring 的xml 管理方式,更复杂一点。

第一步:注释前面写的 @ImportResource("classpath:beans.xml"),否则会引发 bean 使用的冲突。

第二步:在 config 目录下创建 MyConfig 文件,编写代码:

package com.example.chapter01.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {
    @Bean
    public MyService myService(){
        return new MyService();
    }
}

第三步:重新 Debug 测试方法 iocTest(),结果仍然为 true。

注意:如果报错,记得检查是否注@ImportResource("classpath:beans.xml")

Profile 多环境配置

我们之前主程序启动后运行的端口是 8080,我们可以增加一些配置,使其运行在其他 80 端口

第一步:在 resource 目录下创建 properties bundle 的文件 application-test.propertise

添加代码:

server.port=8083

第二步:打开文件 application.propertise

添加代码:

spring.profiles.active=test

第三步:重新 run 主程序,检查端口是否改为8083

在这里插入图片描述

随机数设置和参数值引用

第一步:在 resource 目录下的 test.properties 文件添加代码

//产生随机数
tom.age = ${random.int[10,20]}
tom.description = tom的年龄可能是:${tom.age}

第二步:编写测试方法:

	//Value 可以读取配置文件的信息
    @Value("${tom.description}")
    private String description;
    
        @Test
    public void placeholderTest(){
        System.out.println(description);
    }

Debug 结果:
在这里插入图片描述
后续继续更新后面部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值