标签:
标签(空格分隔): spring-boot
最近趁着下班闲时间学习spring-boot,记录下学习历程,最后打算实战一个API管理平台,下面开始环境配置.
使用maven建立一个普通结构,因为spring-boot内嵌tomcat,所以打包只需要打包成jar就可以直接运行,所以并不像以前那样建立WEB程序了,目录如下,类可以先建立好放在那:
根据官方教程提示,直接引入parent就可以使用spring-boot,告别了之前的spring繁琐的依赖配置.在pom.xml中加入如下配置:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1.编写实体类DemoEntity
/**
* @author Niu Li
* @date 2016/8/9
*/
public class DemoEntity {
private String id;
private String username;
private String password;
//省略set和get方法
}
2.编写控制器HelloController,返回json类型
/**
* @author Niu Li
* @date 2016/8/9
*/
@Controller
public class HelloController {
/**
* 测试hello
* @return
*/
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public @ResponseBody DemoEntity hello(){
DemoEntity entity = new DemoEntity();
entity.setId("1");
entity.setUsername("niuli ");
entity.setPassword("123456");
return entity;
}
}
3.编写启动入口
既然是jar执行程序,则需要一个main函数作为启动入口,在Application.java中加入如下代码:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 默认启动类
*/
@SpringBootApplication
public class Application
{
public static void main( String[] args )
{
SpringApplication.run(Application.class, args);
}
}
4.测试访问
spring-boot默认启动在8080端口,直接访问地址即可:
1.spring-boot的日志输出默认是多彩形式,会根据你电脑自身支持不支持来判断,当然也可以在application.properties中配置
spring.output.ansi.enabled
NEVER:禁用ANSI-colored输出(默认项)
DETECT:会检查终端是否支持ANSI,是的话就采用彩色输出(推荐项)
ALWAYS:总是使用ANSI-colored格式输出,若终端不支持的时候,会有很多干扰信息,不推荐使用
2.spring-boot默认显示info级别及其以上的日志,你可以使用
logging.level.root = debug
//或者
debug=true
给自己项目自定义级别可以使用
logging.level.cn.mrdear=debug
这样的话声明你自己包下的日志debug及其以上级别都会输出.
3.使用logger
spring-boot自动引入了使用slf4j和logback,使用日志不需要自己再引入包.修改之前的controller如下:
import cn.mrdear.entity.DemoEntity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author Niu Li
* @date 2016/8/9
*/
@Controller
public class HelloController {
private Logger logger = LoggerFactory.getLogger(HelloController.class);
/**
* 测试hello
* @return
*/
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public @ResponseBody DemoEntity hello(){
DemoEntity entity = new DemoEntity();
entity.setId("1");
entity.setUsername("niuli ");
entity.setPassword("123456");
logger.debug("这是debug信息");
logger.info("这是info信息");
logger.warn("这是warn信息");
logger.error("这是error信息");
return entity;
}
}
4.写入log文件
需要在application.properties中配置logging.file或logging.path属性
logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
logging.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=/var/log
* 日志文件会在10Mb大小的时候被截断,产生新的日志文件,默认级别为:ERROR、WARN、INFO *
5.自定义配置
spring支持log自定义配置,你只需要把相应的log配置文件放入classpath目录下,就可以覆盖点spring-boot本身的配置,当然命名要遵循如下规范:
Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2:log4j2-spring.xml, log4j2.xml
替换后的配置就和之前配置logger方式一模一样了
博主喜欢使用fastjson来作为json解析器,因为简单易用.
原理是替换到spring的HttpMessageConverters
,在这里面注入自己的转换器即可.
首先引入fastjson依赖:
<!--fast json start-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.14</version>
</dependency>
<!--fast json end-->
在conf包下建立WEBMessageConvert.java
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
/**
* 使用fastjson作为消息转换器
* @author Niu Li
* @date 2016/8/9
*/
@Configuration
public class WEBMessageConvert {
/**
* 使用bean注入,才能使其有效果,验证的话就在Entity字段中使用fastjson的
* 注解@JSONField(serialize = false),转换出来的信息不含该字段,则成功
* @return
*/
@Bean
public HttpMessageConverters customConverters() {
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
fastConverter.setFastJsonConfig(fastJsonConfig);
return new HttpMessageConverters((HttpMessageConverter<?>) fastConverter);
}
}
banner就是spring-boot启动时打出来的信息
替换很简单,就是在classpath目录下建立一个banner.txt,这样的话spring-boot会自动读取这个配置,然后输出.如果想关闭的话在application中配置:
spring.main.banner-mode=off
即可.
标签:
原文地址:http://blog.csdn.net/u012706811/article/details/52168339