Spring boot + maven项目搭建

 

一、搭建maven项目

1.创建maven项目

 

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

 

groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
  比如我创建一个项目,我一般会将groupId设置为cn.lich,cn表示域为中国,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>
</dependency>

 

配置好 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=WARN,logging.level.org.springframework.web=DEBUG

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

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

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

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

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

 

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值