您的位置:首页 > 编程语言 > Java开发

spring boot (一)入门 启动、日志配置和快速构建

2017-10-24 14:59 846 查看
spring boot 入门

什么是spring boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。

使用spring boot有什么好处

其实就是简单、快速、方便!平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?

1)配置web.xml,加载spring和spring mvc

2)配置数据库连接、配置spring事务

3)配置加载配置文件的读取,开启注解

4)配置日志文件

...

配置完成之后部署tomcat 调试

现在非常流行微服务,如果我这个项目仅仅只是实现一个小功能,比如定期清理了一些过期失效的文件,或者做一个向外提供数据的webService服务,难道所有的步骤每次都需要这样重复折腾一遍!当然不,能简单为什么要复杂呢?

但是如果使用spring boot呢?

很简单,我仅仅只需要非常少的几个配置就可以迅速方便的搭建起来一套web项目或者是构建一个微服务!

         下面进入正题,我们要从一个入门实例,就是helloword,来实际感受一下

         开发工具是eclipse,下图是一个标准的springboot默认项目目录结构,采用默认配置可以省去很多配置,当然也可以根据自己的喜欢来进行更改,这里就采用spring boot的默认目录结构,还是那句话能简单为什么要复杂呢?

        


第一,先把完整的pm.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>
   <groupId>com.example</groupId>
   <artifactId>demo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>demo</name>
   <description>Demo project forSpring Boot</description>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.6.RELEASE</version>
      <relativePath
/> <!-- lookup parentfrom repository -->
   </parent>
   <properties>
      <start-class>com.example.demo.DemoApplication</start-class>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <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>
第二,项目的启动类要注意,最好放在根包下面,其它的类或包也相应在根包下面,然后

在启动类加一个注解@SpringBootApplication,就可以了。这一个注解相当于

@Configuration,@EnableAutoConfiguration,@ComponentScan
三个注解,前提是你的启动类要放在根包下。

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

}

三、在根包上建一个controller,@restcontroller为@controller和@responsebody的结合,可以直接以字符串返回:

package com.gaox.demo.controller;

 

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.bind.annotation.RestController;

 

@RestController

public class TestController {

 

   @RequestMapping("/hello")

   publicString hello(){

      return"hello world !";

   }

}

四、这时run as 根包上的启动类就可以了。如图



spring boot 默认的端口是8080,默认的项目路径为空,所以输入http://localhost:8080/hello就可以请求到相应的controller了



另外,端口和项目的根路径可以在application.properties中配置

server.port=8081
server.context-path=/demo



spring boot 还有默认的日志记录,可以在application.properies中配置使用,默认日志文件超过10M会重新建一个文件继续记录,另外可以对日志的输出级别、输出样式进行简单的调整,基本可以满足需要了,如果不能满足实际需要,可以参考考虑单独日志配置输出

logging.file=d:/logs/demo.log

#debug=true
#logging.level.com.sundyn.task=info
#logging.level.com.sundyn.controller=info
#logging.pattern.file=%d{yyyy/MM/ddHH:mm:ss} [%thread] %-5level %logger- %msg%n

 

当然属性文件里还可以配置很多东西,比如配置一 下面的参数

gaox= I am gaox !,可以在项目中能过@value("${gaox}")取到。

package com.gaox.demo.controller;
 
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public
class
TestController {
  
   @Value("${gaox}")
   private String
gaox;
   private Logger
log=Logger.getLogger(TestController.class);
   @RequestMapping("/hello")
   public String hello(){
      return
"hello world! 我设置了新的访问端口和项目根路径";
   }
  
   @RequestMapping("/gaox")
   public String gaox(){
      log.info(gaox);
      return
gaox;
   }
}
在配置的日志中也看到了记录

2017-10-24 14:27:48.708  INFO 5700 --- [http-nio-8081-exec-1]com.gaox.demo.controller.TestController : I am gaox !

最好不要在属性文件中配置中文参数,因为会乱码,原因还没有找到。

有时候从debug as启动的时候会报异常,但是不会影响项目的运行,本人有极强的强迫症,项目没有错,居然报异常,无法容忍,所以在eclipse里设置一下就可以了preferences>java>debug 如下图红杠去掉勾选就没事了



五、如何快速构建一个spring boot项目?

   个人总结有四种方法:

第一、最快,零成本。spring boot的官网 http://start.spring.io如下,构建完项目,下载后再导入到自己的开发工具里


第二种,spring boot 官网 https://spring.io/tools/sts/all下载Spring ToolSuite,解压后双击sts-bundle\sts-3.6.4.RELEASE 下sts.exe启动,剩下的操作和eclipse一样,右键new spring starter project,然后下一步,直到完成就可以了,这种方法的另一个好处是配置application.properties是有提示

 



第三种,就是在eclipse中安装关于spring boot的相关插件,也可以实现如第二种方法的效果,只不过是好像spring tool suite插件对应eclipse有版本限制,试了好几种没有找到合适的插件,不过这也是一种方法。

第四种,那就在eclipse里建一个普通maven java项目然后,配置好pom.xml 、application.properties,形成spring boot默认的目录结构也行。

 

我比较喜欢用sts,方便,用着和eclipse一样,感觉就是一个装了spring tool suite的eclipse,只不过名字叫STS.EXE

 

简单的入门,就介绍到这。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息