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

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.项目目录结构 如下图




启动类 DemoApplication官方建议放在最外层

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项目源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: