Spring boot + maven项目搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/syslbjjly/article/details/79963099


一、搭建maven项目

1.创建maven项目

 

GroupID:是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java目录结构
ArtifactID
:就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

 

groupidartifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为orgcomcn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupIdorg.apache,它的域是org(因为tomcat是非营利项目),公司名称是apacheartigactIdtomcat
  比如我创建一个项目,我一般会将groupId设置为cn.lichcn表示域为中国,lich是自己名字缩写,artifactId设置为testProj,表示你这个项目的名称是testProj,依照这个设置,你的包结构最好是cn.lich.testProj打头的,如果有个StudentDao,它的全路径就是cn.lich.testProj.dao.StudentDao

 

2.添加web.xml文件

         在新创建的maven项目时,是缺少WEB-INF文件夹以及下面的web.xml文件,而pom.xml文件会报错:pom.xml出现web.xml is missing and <failOnMissingWebXml> is set totrue错误,可以通过两种方式来解决这个问题。

a.添加web.xml文件

右击项目名称,选择java EETools下的Generate Deployment Descriptor Stub,自动添加web.xml文件

b.配置<failOnMissingWebXml>参数

在pom.xml文件下配置如下参数即可:

</build>

    <plugins>

 <plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-war-plugin</artifactId>

<version>2.6</version>

<configuration>

<failOnMissingWebXml>false</failOnMissingWebXml>

</configuration>

</plugin>

</plugins>

</build>

或者

<properties>

<failOnMissingWebXml>false</failOnMissingWebXml>

</properties>

 

3.配置pom.xml文件

导入相关jar、maven的spring-boot-maven-plugin、配置java版本(不配置的话默认父类配置的是1.6)

a.导入jar的相关dependency

可以到此网站去找相关依赖:http://mvnrepository.com/

<!-- 定义公共资源版本 -->

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>1.5.6.RELEASE</version>

<relativePath />

 </parent>

如果是引用了parent公共资源版本,则引入web时无需引入版本号以及相关jar

<dependencies>

<!-- 上边引入 parent,因此下边无需指定版本 -->

<!-- 包含 mvc,aop jar资源 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

</dependencies>

b.配置maven插件:

<plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <version>1.3.5.RELEASE</version>

                    <configuration>

                    <mainClass>${start-class}</mainClass>

                    <layout>ZIP</layout>

                  </configuration>

                  <executions>

                    <execution>

                      <goals>

                        <goal>repackage</goal>

                      </goals>

                    </execution>

                  </executions>

            </plugin>

</plugins>

 

你还可以指定要执行的类,如果不指定的话,Spring会找有这个【publicstatic void main(String[] args)】方法的类,当做可执行的类。

如果你想指定的话,可以用下面两个方法:

1,如果你的POM是继承spring-boot-starter-parent的话,只需要下面的指定就行。

<properties>

   <!-- The main class to start by executing java -jar -->

   <start-class>com.mycorp.starter.HelloWorldApplication</start-class>

</properties>

 

2,如果你的POM不是继承spring-boot-starter-parent的话,需要下面的指定具体执行的类。

  <plugin>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-maven-plugin</artifactId>

      <version>1.3.5.RELEASE</version>

      <configuration>

          <mainClass>${start-class}</mainClass>

          <layout>ZIP</layout>

      </configuration>

      <executions>

          <execution>

              <goals>

                   <goal>repackage</goal>

              </goals>

          </execution>

      </executions>

  </plugin>

 

c.配置java版本:

<pluginManagement>

          <plugins>

              <plugin>

                  <artifactId>maven-compiler-plugin</artifactId>

                  <configuration>

                      <source>1.8</source>

                      <target>1.8</target>

                  </configuration>

              </plugin>

          </plugins>

</pluginManagement>

d.热部署:

当我们修改文件和创建文件时,都需要重新启动项目。这样频繁的操作很浪费时间,配置热部署可以让项目自动加载变化的文件,省去的手动操作。

在 pom.xml 文件中添加如下配置:

                   <!-- 热部署 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>

<optional>true</optional>

<scope>true</scope>

</dependency>

<!—插件配置 -->

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<configuration>

<!-- 没有该配置,devtools 不生效 -->

<fork>true</fork></configuration>

</plugin>

</plugins>

</build>

配置好 pom.xml 文件后,我们启动项目,随便创建/修改一个文件并保存,会发现控制台打印 springboot 重新加载文件的信息

        

e.其他配置:

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

</properties>

二、创建spring boot相关目录及配置

1.搭建spring的目录结构

创建 src/main/resources源文件目录,并在该目录下创建 application.properties 文件、static 和 templates 的文件夹。

application.properties:用于配置项目运行所需的配置数据。

static:用于存放静态资源,如:css、js、图片等。

templates:用于存放模板文件。

目录结构如下:

2.创建启动类

a.创建启动类

在com.test包下创建启动类,如下图:

b.启动类写法

在Application.java中具体入口写法如下图:

/**

 * 该注解指定项目为springboot,由此类当作程序入口

 * 自动装配 web 依赖的环境

**/

@SpringBootApplication

publicclass Application {

     publicstaticvoid main(String[] args) {

         SpringApplication.run(Application.class, args);

     }

}

    

         之前用户使用的是3个注解注解他们的main类。

分别是@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。

默认属性:

@SpringBootApplication=@Configuration+ @EnableAutoConfiguration + @ComponentScan。

3.案例演示

         在com.test下创建一个conrtoller类,如下图:

    在 SpringbootApplication 文件中右键 Run as -> Java Application。当看到 “Tomcat started on port(s): 8080 (http)” 字样说明启动成功。

打开浏览器访问 http://localhost:8080/,结果如下:

三、多环境切换

application.properties 是 springboot 在运行中所需要的配置信息。

当我们在开发阶段,使用自己的机器开发,测试的时候需要用的测试服务器测试,上线时使用正式环境的服务器。

这三种环境需要的配置信息都不一样,当我们切换环境运行项目时,需要手动的修改多出配置信息,非常容易出错。

为了解决上述问题,springboot 提供多环境配置的机制,让开发者非常容易的根据需求而切换不同的配置环境。

在 src/main/resources 目录下创建三个配置文件:

application-dev.properties:用于开发环境

application-test.properties:用于测试环境

application-prod.properties:用于生产环境

我们可以在这个三个配置文件中设置不同的信息,application.properties 配置公共的信息。

在application.properties 中配置:

                   spring.profiles.active=dev

表示激活application-dev.properties 文件配置, springboot 会加载使用 application.properties 和application-dev.properties 配置文件的信息。

同理,可将spring.profiles.active 的值修改成 test 或 prod 达到切换环境的目的。演示图如下:

四、配置日志

1.配置logback(官方推荐使用)

         springboot 默认会加载 classpath:logback-spring.xml 或者classpath:logback-spring.groovy。

如需要自定义文件名称,在application.properties 中配置 logging.config 选项即可。

在 src/main/resources 下创建 logback-spring.xml 文件,内容如下:

         <?xml version="1.0"encoding="UTF-8"?>

<configuration>

    <!-- 文件输出格式 -->

    <property name="PATTERN"

        value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level[%thread] %c [%L] -| %msg%n" />

    <!-- test文件路径 -->

    <property name="TEST_FILE_PATH"value="d:/test.log" />

    <!-- pro文件路径 -->

    <property name="PRO_FILE_PATH"value="/opt/test/log" />

    <!-- 开发环境 -->

    <springProfile name="dev">

        <appender name="CONSOLE"class="ch.qos.logback.core.ConsoleAppender">

            <encoder>

                <pattern>${PATTERN}</pattern>

            </encoder>

        </appender>

        <logger name="com.light.springboot"level="debug" />

        <root level="info">

            <appender-ref ref="CONSOLE"/>

        </root>

    </springProfile>

    <!-- 测试环境 -->

    <springProfile name="test">

        <!-- 每天产生一个文件 -->

        <appender name="TEST-FILE"

            class="ch.qos.logback.core.rolling.RollingFileAppender">

            <!-- 文件路径 -->

            <file>${TEST_FILE_PATH}</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <!-- 文件名称 -->

                <fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>

                <!-- 文件最大保存历史数量 -->

                <MaxHistory>100</MaxHistory>

            </rollingPolicy>

            <layout class="ch.qos.logback.classic.PatternLayout">

                <pattern>${PATTERN}</pattern>

            </layout>

        </appender>

        <root level="info">

            <appender-ref ref="TEST-FILE"/>

        </root>

    </springProfile>

    <!-- 生产环境 -->

    <springProfile name="prod">

        <appender name="PROD_FILE"

            class="ch.qos.logback.core.rolling.RollingFileAppender">

            <file>${PRO_FILE_PATH}</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>

                <MaxHistory>100</MaxHistory>

            </rollingPolicy>

            <layout class="ch.qos.logback.classic.PatternLayout">

                <pattern>${PATTERN}</pattern>

            </layout>

        </appender>

        <root level="warn">

            <appender-ref ref="PROD_FILE"/>

        </root>

    </springProfile>

</configuration>

其中,springProfile 标签的 name 属性对应application.properties 中的 spring.profiles.active 的配置。

即spring.profiles.active 的值可以看作是日志配置文件中对应的 springProfile 是否生效的开关。

2.配置log4j2

a.添加依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-log4j2</artifactId>

</dependency>

 

b.配置日志文件

spring boot 默认会加载classpath:log4j2.xml 或者 classpath:log4j2-spring.xml。

如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。

log4j2.xml 文件内容如下:

         <?xml version="1.0"encoding="utf-8"?>

<configuration>

    <properties><!-- 文件输出格式 -->

        <property name="PATTERN">%d{yyyy-MM-ddHH:mm:ss.SSS} |-%-5level

            [%thread]%c [%L] -| %msg%n</property>

    </properties>

    <appenders>

        <Console name="CONSOLE"target="system_out">

            <PatternLayout pattern="${PATTERN}"/>

        </Console>

    </appenders>

    <loggers>

        <logger name="com.light.springboot"level="debug" />

        <root level="info">

            <appenderref ref="CONSOLE"/>

        </root>

    </loggers>

</configuration>

 

log4j2 不能像 logback 那样在一个文件中设置多个环境的配置数据,只能命名 3 个不同名的日志文件,分别在 application-dev,application-test 和 application-prod 中配置 logging.config 选项。

除了在日志配置文件中设置参数之外,还可以在 application-*.properties 中设置,日志相关的配置:

logging.config # 日志配置文件路径,如 classpath:logback-spring.xml

logging.exception-conversion-word # 记录异常时使用的转换词

logging.file # 记录日志的文件名称,如:test.log

logging.level.* #日志映射,如:logging.level.root=WARNlogging.level.org.springframework.web=DEBUG

logging.path # 记录日志的文件路径,如:d:/

logging.pattern.console # 向控制台输出的日志格式,只支持默认的 logback 设置。

logging.pattern.file # 向记录日志文件输出的日志格式,只支持默认的 logback 设置。

logging.pattern.level # 用于呈现日志级别的格式,只支持默认的 logback 设置。

logging.register-shutdown-hook # 初始化时为日志系统注册一个关闭钩子


猜你喜欢

转载自blog.csdn.net/syslbjjly/article/details/79963099