spring boot 项目实战
2018-03-05 18:01
155 查看
前言
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。1.创建maven项目 修改pom文件如下
<?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.xue</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.ou f9cc tputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.7</java.version> </properties> <dependencies> <!-- 核心模块,包括自动配置支持、日志和YAML --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- 测试模块,包括JUnit、Hamcrest、Mockito。 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- CXF webservice --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-spring-boot-starter-jaxws</artifactId> <version>3.1.11</version> </dependency> <!-- CXF webservice --> <!-- mysql start --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- mysql end --> <!-- httpclient start --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>fluent-hc</artifactId> <version>4.3.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.3.1</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- httpclient end --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.0</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> </plugins> </build> </project>
2.项目配置文件
application.properties是主配置文件项目启动时会加载该文件,主要是放公共配置dev是本地配置,prod是生产环境配置,test是测试环境配置这样配置的好处是启动时可以默认加载某个配置文件,启动命令如下java -jar project-name.jar --spring.config.location=/project-name/config/application.properties --spring.profiles.active=devapplication.properties配置如下 #激活哪一个环境的配置文件
spring.profiles.active=dev
#公共配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss:application-dev.properties配置如下#端口号
server.port=8080
#数据库连接
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto= update
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shop?useUnicode=true&autoReconnect=true&failOverReadOnly=false&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.initialSize=10
spring.datasource.minIdle=10
spring.datasource.maxActive=30
spring.datasource.maxWait=60000
spring.datasource.timeBetweenEvictionRunsMillis=60000
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
application-test.properties配置和application-prod.properties配置如上
3.项目目录结构 如下图
4. 日志配置
<?xml version="1.0" encoding="UTF-8"?><configuration>
<!-- <include resource="org/springframework/boot/logging/logback/base.xml" /> -->
<!--生产环境 -->
<springProfile name="prod">
<!-- 将日志记录到文件中 -->
<appender name="LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>back.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>back.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%-20(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %logger{80}.%method - %msg%nn</Pattern>
</encoder>
</appender>
<root level="WARN">
<appender-ref ref="LOG"/>
</root>
</springProfile>
<!--测试环境 -->
<springProfile name="test">
<!-- 将日志打印到控制台 -->
<appender name="LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>back.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>back.%d{yyyy-MM-dd}.log</FileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%-20(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %logger{80}.%method - %msg%n</Pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="LOG"/>
</root>
</springProfile>
<!--开发环境 -->
<springProfile name="dev">
<!-- 将日志打印到控制台 -->
<appender name="LOG" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%-20(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %-5level %logger{80}.%method - %msg%n</Pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="LOG"/>
</root>
</springProfile>
<!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
<logger name="org.hibernate" level="WARN" />
<logger name="org.springframework" level="WARN" />
<logger name="org.thymeleaf" level="WARN" />
<logger name="org.apache" level="WARN" />
<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
</configuration>其中 也分 dev test prod 三个环境的日志,是根据启动那个配置文件就调用 logback-spring.xml 中springProfile对应的日志方式,这也是springboot的方便之处
5. 实战测试
springboot只需要在pom中引入jpa和MySQL依赖就可以实现增删改查controller 层 @RestController
public class HelloWorldController {
@Autowired
private GoodsRepository goodsService;
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@SuppressWarnings("deprecation")
@RequestMapping("/hello")
public String index() {
List<Goods> findByName = goodsService.findByName("哈哈");
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
logger.info(findByName.toString());
return findByName.toString();
}
}@RestController 注解 相当于 @Controller 和 @ResponseBody 的二合一 很方便吧service 层@Service
public class GoodsService {
@Autowired(required=true)
private GoodsRepository goodsDao;
public List<Goods> findByName(String name){
return goodsDao.findByName(name);
}
}repository 层 继承 JapRepository 就可以实现基本的crud@Repository
public interface GoodsRepository extends JpaRepository<Goods, Integer> {
}
6.启动项目测试
总结,springboot出现的目标就是减少配置文件,轻量级的框架,比如要想集成redis 只需要在pom中加入
依赖,然后直接引入如下
@Autowired
private StringRedisTemplate stringTemplate;
就可以使用redis了,就是这么的方便,是不是瞬间感觉开发简单了好多
项目源码 springboot项目源码
相关文章推荐
- Spring Boot项目实战之拦截器与过滤器
- Spring Boot实战之Spring项目的搭建
- Spring Boot实战之项目搭建(二)
- Android项目实战之仿网易顶部导航栏效果
- vueJS+ES6开发移动端APP实战项目笔记
- 项目实战No11 精华模块
- 反射的项目实战,将枚举转换成列表的办法
- Struts2项目实战 微云盘(八):Action异常处理
- 3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
- 13.9-全栈Java笔记:打飞机游戏实战项目|Time|Plane|其他案例展示
- 移动web——微金所实战项目
- 分享磨砺营马剑威老师讲解-Android项目实战开发第三波,内含完整代码
- Java从零打造企业级电商项目实战mmall
- react项目实战(权限模块开发七)通过ajax技术获取数据
- 【项目实战】使用Scrapy爬取商品信息并写入MySQL数据库
- 编程项目实战课,欢迎参加
- android从入门到精通-项目实战(心得及源码)
- python实战===短信验证码的小项目
- Java项目实战反射工具类
- 《实战突击 ASP.NET项目开发案例整合》pdf电子书免费下载