当2019年还没有到来的时候,就听到了各种各样的声音,说2019年注定会是互联网行业的寒冬,企业面临裁员,现金流运转困难等事情,这些还真的被说中了。所以我决定给自己做一些知识储备。选来选去,我选择了两个,一个是Java后台,另外一个是IOS开发。但是我决定把Java后台放在首要的位置。

其实对于我来说,关于Java后台的内容,我是什么也不会,所以完全就是在各种各样的探索。可能我这样的学习方法对于打多少人来说实不可取的。但是我觉得这样的方法可以激励我,可以让我有持久的学习动力,一直走下去。
好了,直接搞起来!

Spring特点

  1. 自动配置:针对Spring很多常见的功能和应用场景,Spring Boot都可以帮我们自动实现。减少了我们自己配置的繁杂
  2. 起步依赖:我们需要Spring Boot有什么样的功能,就直接引入什么样的依赖既可
  3. 命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
  4. Actuator:让你能够深入运行中的Spring Boot应用程序,一套究竟

这里我使用的开发工具是Idea,说实话,Idea不管是功能,还是UI都比Eclipse要好的多,虽然我现在用的是开源版的。

构建项目

方法一

这里我要去构建一个Spring Boot的Maven项目,这样我们就可以更加方便的管理我们的依赖。使用Spring Initializr去构建项目,这个项目其实就是一个web,项目。但是它可以为我们生成Spring Boot的项目结构。

进入网站之后,我们可以看到如图所示的内容
Spring Boot学习记录(一)创建应用和基本配置
这里我们可以直接选择默认的内容即可。当然可以去改变Group(包名),artifact(应用名)。之后选择GenerateProject。选择完成之后,就会在自动下载一个压缩包到本地中。紧接着我们需要将这个项目导入到Idea中。
Spring Boot学习记录(一)创建应用和基本配置
然后选择OK按钮,就会出现如下图所示的内容:
Spring Boot学习记录(一)创建应用和基本配置
选择Maven类型,剩下的一路Next,即可完成初始化。

方法二

通过Idea帮我们实现初始化操作
点击新建一个项目,然后选择如下图所示的内容:
Spring Boot学习记录(一)创建应用和基本配置
这里我使用的是默认的配置。之后点击next,然后我们需要对项目进行一些简单的配置,我的配置如下图所示
Spring Boot学习记录(一)创建应用和基本配置
点击next之后,进入如下所示的页面,选择web,然后再点击next
Spring Boot学习记录(一)创建应用和基本配置
然后最后一步,如下所示,设置project的名称和存储路径
Spring Boot学习记录(一)创建应用和基本配置
这样我们就等待Idea自动帮我们继承好环境即可。
之后的目录结构如下所示,就是一个简单的空内容:
Spring Boot学习记录(一)创建应用和基本配置
这里面src文件夹就是我们需要执行各种逻辑功能的地方。除此之后,有一些特殊的文件我们需要了解

  • pom.xml:Maven构建说明文件。
  • SpringbootMavenProApplication.java:一个带有main()方法的类,用于启动应用程序(关键)。可以理解为当前应用的main函数
  • SpringbootMavenProApplicationTests.java:一个空的Junit测试类,它加载了一个使用Spring Boot字典配置功能的Spring应用程序上下文。
  • application.properties:一个空的properties文件,你可以根据需要添加配置属性

这里我们要重点看一下pom.xml文件。

pom.xml

这个文件是管理我们所有依赖包的文件,如果我们需要使用什么样的依赖包,只需要按照固定的格式在pom.xml文件中书写,即可完成相应依赖的导入。
这是初始化完成之后的pom.xml文件的内容

<?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>
    <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.muying</groupId>
    <artifactId>springboot_maven_pro</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot_maven_pro</name>
    <description>Demo project for Spring Boot</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>
    </dependencies>

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

</project>

只要会使用XML文件解析的都能看的懂,这里有几个重要的标签说一下:

Spring Boot的父级依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
 </parent>

这块就是父级依赖,有了这块内容,该项目就是一个Spring Boot的项目。spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。关于Spring Boot提供了哪些jar包的依赖,可查看C:\Users\edz.m2\repository\org\springframework\boot\spring-boot-dependencies\2.1.3.RELEASE\spring-boot-dependencies-2.1.3.RELEASE.pom

<properties>
        <activemq.version>5.15.8</activemq.version>
        <antlr2.version>2.7.7</antlr2.version>
        <appengine-sdk.version>1.9.71</appengine-sdk.version>
        <artemis.version>2.6.4</artemis.version>
        <aspectj.version>1.9.2</aspectj.version>
        <assertj.version>3.11.1</assertj.version>
        <atomikos.version>4.0.6</atomikos.version>
        <bitronix.version>2.1.4</bitronix.version>
        <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
        <byte-buddy.version>1.9.10</byte-buddy.version>
        <caffeine.version>2.6.2</caffeine.version>
        <cassandra-driver.version>3.6.0</cassandra-driver.version>
        <classmate.version>1.4.0</classmate.version>
        <commons-codec.version>1.11</commons-codec.version>
        <commons-dbcp2.version>2.5.0</commons-dbcp2.version>
        <commons-lang3.version>3.8.1</commons-lang3.version>
        <commons-pool.version>1.6</commons-pool.version>
        <commons-pool2.version>2.6.1</commons-pool2.version>
        <couchbase-cache-client.version>2.1.0</couchbase-cache-client.version>
        <couchbase-client.version>2.7.2</couchbase-client.version>
        <derby.version>10.14.2.0</derby.version>

内容较多,感兴趣的可以自己去看看,都是maven可以使用的库

起步依赖

pring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。
Spring Boot学习记录(一)创建应用和基本配置

Spring Boot Maven插件

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

上面的配置就是Spring Boot Maven插件,Spring Boot Maven插件提供了许多方便的功能:

  • 把项目打包成一个可执行的超级JAR(uber-JAR),包括把应用程序的所有依赖打入JAR文件内,并为JAR添加一个描述文件,其中的内容能让你用java -jar来运行应用程序。
  • 搜索public static void main()方法来标记为可运行类

应用入口类

SpringbootMavenProApplication是一个很关键的启动类,程序的入口就是这里,为了演示简单,我们不再新建控制类,而是直接在这个入口类中编写,添加@RestController以及index方法,如下

@SpringBootApplication
public class SpringbootMavenProApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMavenProApplication.class, args);
    }
@RequestMapping("/")
    public String index() {
        return "hello spring boot!";
    }

}

  1. @SpringBootApplication是Sprnig Boot项目的核心注解,主要目的是开启自动配置
  2. main方法这是一个标准的Java应用的main的方法,主要作用是作为项目启动的入口
  3. @RestController注解等价于@[email protected]的结合,使用这个注解的类里面的方法都以json格式输出
  4. @RequestMapping()注解表示路由路径,也就是用户在实际中输入的网址信息

启动

最后我们启动的时候有三种方式启动

第一种

Spring Boot学习记录(一)创建应用和基本配置

第二种

使用命令 mvn spring-boot:run”在命令行启动该应用Spring Boot学习记录(一)创建应用和基本配置

第三种

运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“java -jar”命令就可以直接运行
Spring Boot学习记录(一)创建应用和基本配置
这三种哪一种都是可以的,运行之后,在浏览器中输入http://localhost:8080,即可访问到刚刚创建的项目
Spring Boot学习记录(一)创建应用和基本配置

配置

一般情况下,SpringBoot使用的是配置文件进行项目的配置的。一般放在src/main/resources目录下,如果没有的话,我们可以自己创建一个application.properties的配置文件
Spring Boot学习记录(一)创建应用和基本配置

自定义属性

application.properties提供了自定义属性,可以在这里设置一些常量配置
Spring Boot学习记录(一)创建应用和基本配置
然后再使用的时候可以直接通过注解的方式调用,如下
Spring Boot学习记录(一)创建应用和基本配置
在浏览器中就有如下内容:
Spring Boot学习记录(一)创建应用和基本配置
大多时候属性过多,我们可以通过绑定一个对象bean来实现,这里我们创建一个对象ConfigBean.java的类。顶部需要使用注解@ConfigurationProperties(prefix = “com.dudu”)来指明使用哪个
Spring Boot学习记录(一)创建应用和基本配置

这里有一个单词写错了,应该是email,而不是eamil

这里可能会报错,因为还没有添加相应的依赖,在pom.xml文件中添加如下依赖

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

添加完毕之后,Idea会自动帮我们下载我们所需要的jar包,但是之后还是会报错,然后我们需要SpringBoot的入口也就是SpringbootMavenProApplication.java文件中,使用@EnableConfigurationProperties并指明要加载哪个bean。具体的内容如下所示

@SpringBootApplication
@EnableConfigurationProperties({ConfigBean.class})
public class SpringbootMavenProApplication {

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

    @RequestMapping("/")
    public String index() {
        return "hello spring boot!";
    }

}

Spring Boot学习记录(一)创建应用和基本配置
最后在我们使用的时候,通过ConfigBean对象引入即可,如下所示

@RestController
public class UserController {

//    @Value("${com.muying.name}")
//    private String name;
//    @Value("${com.muying.email}")
//    private String email;
//
//    @RequestMapping("/user")
//    public String gotoUser() {
//        return name + "," + email;
//    }

    @Autowired
    private ConfigBean configBean;

    @RequestMapping("/user2")
    public String getUser() {
        return configBean.getName() + ";" + configBean.getEamil();
    }
}

Spring Boot学习记录(一)创建应用和基本配置
最终的结果如下:
Spring Boot学习记录(一)创建应用和基本配置

参考资料

SpringBoot干货

相关文章:

  • 2021-05-05
  • 2021-06-04
  • 2022-12-23
  • 2021-07-31
  • 2021-07-06
  • 2021-11-04
  • 2021-09-15
  • 2022-12-23
猜你喜欢
  • 2021-05-11
  • 2021-09-16
  • 2021-12-05
  • 2022-01-02
  • 2021-11-30
  • 2022-01-14
  • 2021-07-27
相关资源
相似解决方案