前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >框架 | SpringBoot项目创建和发布部署步骤

框架 | SpringBoot项目创建和发布部署步骤

作者头像
码神联盟
发布2018-06-04 16:43:19
5.1K2
发布2018-06-04 16:43:19
举报
文章被收录于专栏:码神联盟码神联盟码神联盟

如何创建Spring Boot项目?

1

技术选型

JDK1.7、MYSQL57、Spring Boot、Logback、Mybatis

2

开发工具

Myeclipse、Maven、Linux

3

数据库设计

表名:userinfo 结构如下:

CREATE TABLE `userinfo` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

1创建Maven工程

步骤:

Ctrl+N-->选择Maven project -->勾选‘Create a Simple project’-->Next-->输入group ID\Artifact ID\Version\Packaging-->Finish

图示:

结构如图:

2导入SpringBoot所需jar包

pom.xml:

<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.9.RELEASE</version>
 <type>pom</type>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <version>1.5.9.RELEASE</version>
 </dependency>
 <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>1.5.9.RELEASE</version>
                <scope>test</scope>
        </dependency>
</dependencies>

3增加application.properties属性文件

application.properties: 其它配置属性信息,点击这里

内容为:

server.port=8010

server.contextPath=/springboot

4增加启动类

添加类:MainServer.java:

@SpringBootApplication
public class MainServer{
        public static void main(String[] args) {

 SpringApplication.run(MainServer.class, args);
 }
}

5启动测试

启动MainServer.java中main方法:

右键-->run as/debug as--->略,此处呵呵哒

查看控制台日志:

如果显示如图所示,则代表搭建成功

6第一个接口‘Hello Boot’

①:在MainServer.java中声明当前为controller类

②:添加hello的请求接口地址

③:启动main方法,前端访问

代码如下:

@Controller
@SpringBootApplication
public class MainServer{
 @RequestMapping(value = "/hello")
 public @ResponseBody String hello(){
 return "Hello Boot";
 }
 public static void main(String[] args) {
 SpringApplication.run(MainServer.class, args);
 }
}

测试结果:

7整合日志框架logback

①:导包

②:增加logback.xml配置文件(放到resource目录下)

③:代码引用日志框架

导包:

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-logging</artifactId>
 <version>1.5.9.RELEASE</version>
</dependency>

配置文件信息:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--定义日志文件的存储地址 勿在 LogBack 中使用相对路径-->
    <property name="LOG_HOME" value="C:/" />
    <!-- 不用彩色控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--&lt;!&ndash;格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符&ndash;&gt;-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="DAYINFO"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
     <FileNamePattern>${LOG_HOME}/TestSpringBoot_info.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <appender name="DAYERROR"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
 <FileNamePattern>${LOG_HOME}/TestSpringBoot_error.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="DAYERROR" />
        <appender-ref ref="DAYINFO" />
    </root>
</configuration>

代码引用:

@Controller
@SpringBootApplication
public class MainServer{
 private final Logger log = LoggerFactory.getLogger(MainServer.class);
 @RequestMapping(value = "/hello")
 public @ResponseBody String hello(){
 log.info("Hello Boot info");
 return "Hello Boot";
 }
 public static void main(String[] args) {
 SpringApplication.run(MainServer.class, args);
 }
}

8整合mybatis

因为后续随着业务的越来越多,功能模块的不断增加,肯定不能在启动类中写controller方法,所以我们需要将controller和service、entity、以及DAO单独独立成包,进行结构拆分。

①:导包

②:在配置文件application.properties中配置数据库连接信息

③:新建controller、entity、service、dao包

④:添加接口方法和实现类、sql语句

⑤:添加‘增加’、‘查询’数据库信息接口

导包:

<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>1.3.1</version>
</dependency>
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.30</version>
</dependency>

application.properties:

关于application.properties的其它配置信息,可参考文章《application.properties配置大全》

spring.datasource.url=jdbc:mysql://localhost:3306/springboot

spring.datasource.username=root

spring.datasource.password=123456

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

修改项目结构如下:

核心代码如下:

UserController.java

@Controller
public class UserController {
 private final Logger log = LoggerFactory.getLogger(UserController.class);
 @Autowired
 private IUserService userService;
 @RequestMapping(value = "/add",method = RequestMethod.GET)
 public  @ResponseBody String addUser() {
userService.insertUser("likang","123123");
        return "插入成功";
    }
 @RequestMapping(value="/find",method=RequestMethod.GET)
 public @ResponseBody UserInfo queryUserByName(String username){
 UserInfo userinfo = userService.findByname(username);
 return userinfo;
 }
}
UserDao.java
@Mapper
public interface  UserDao {
 @Select("select * from userinfo where username = #{username}")
    UserInfo findByName(@Param("username") String username);
    @Insert("insert into userinfo (username, password) values(#{username}, #{password})")
    int insert(@Param("username") String name, @Param("password") String password);
}

UserInfo.java

public class UserInfo {
 private int id;
 private String username;
 private String password;
 public int getId() {
 return id;
 }
 public void setId(int id) {
 this.id = id;
 }
 public String getUsername() {
 return username;
 }
 public void setUsername(String username) {
 this.username = username;
 }
 public String getPassword() {
 return password;
 }
 public void setPassword(String password) {
 this.password = password;
 }
}
 MainServer.java
@SpringBootApplication
@ComponentScan(basePackages={"com.xdl"})
@MapperScan({"com.xdl.dao"}) 
public class MainServer{
 public static void main(String[] args) {
 SpringApplication.run(MainServer.class, args);
 }
}
IUserService.java
public interface IUserService {
 //查询
 public UserInfo findByname(String username);
 //增加
 public int insertUser(String username,String password);
}
UserServiceImpl.java
@Service
public class UserServiceImpl implements IUserService{
 @Autowired
 UserDao userDao;
 @Override
 public int insertUser(String username, String password) {
 return userDao.insert(username, password);
 }
 @Override
 public UserInfo findByname(String username) {
 UserInfo userinfo = userDao.findByName(username);
 return userinfo;
 }
}

9测试接口

①:启动主函数

②:访问接口

结果:

如何发布Sping Boot项目?

新建好SpringBoot项目之后,SIT测试如果没问题,则下一步肯定要进行UAT测试。

那么如何将SpringBoot项目进行发布部署,这和我们之前的普通web项目不太一样,之前的项目直接部署到tomcat的webapps中,然后启动tomcat即可访问。

但是SpringBoot项目内嵌tomcat,这如何发布部署访问呢?

目前比较常用的方式有三种:发布JAR包、发布WAR包、部署到自动化容器中,以下具体讲解发布部署过程。

方式一:JAR包

注意:

在项目研发中,可能存在其它的第三方jar包库,那这样的话,原生的maven打jar包方式在SpringBoot的项目中存在缺陷,需要进一步的配置,才能到导出jar包的时候,包含第三方jar包。

步骤:

①:修改pom.xml中packaging为jar

②:导入spring-boot-maven-plugin包、resources资源设置,第三方jar包路径导出设置

③:项目右键,执行maven bulid命令

④:Goals中增加编辑发布依赖

⑤:在target文件下,查看是否生成jar包

⑥:使用dos命令或者将jar部署到linux服务器中

⑦:如果是dos命令,则进入jar所在目录执行如下命令:

java -jar springboot.jar

⑧:linux服务器,在对应的jar包目录下执行上述命令

⑨:启动成功之后,浏览器访问即可

操作过程:

修改pom.xml文件:

<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.xdl</groupId>
 <artifactId>SpringBoot</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>1.5.9.RELEASE</version>
 <type>pom</type>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <version>1.5.9.RELEASE</version>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <version>1.5.9.RELEASE</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-logging</artifactId>
 <version>1.5.9.RELEASE</version>
 </dependency>
 <dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>1.3.1</version>
 </dependency>
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.30</version>
 </dependency>
</dependencies>
<build>
      <plugins>
    <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 <configuration>
 <mainClass>com.xdl.server.MainServer</mainClass>
 </configuration>
 </plugin>
    </plugins>
 <finalName>springboot</finalName>
 <resources>
 <resource>
 <directory>src/lib</directory>
 <targetPath>BOOT-INF/lib/</targetPath>
 <includes>
 <include>**/*.jar</include>
 </includes>
 </resource>
 <resource>
 <directory>src/main/resources</directory>
 <targetPath>BOOT-INF/classes/</targetPath>
 </resource>
 </resources>
 </build>
</project>

在src目录下,新建lib文件夹,存储第三方jar包,比如:

编译打包:

①:工程-->右键-->Maven bulid-->在Goals中输入:org.apache.maven.plugins:maven-jar-plugin:2.4:jar org.springframework.boot:spring-boot-maven-plugin:1.5.9.RELEASE:repackage-->run(编译)

注意,编译之前,需要将工程所需依赖修改为jdk包

②:工程-->右键-->Maven install(打包)

查找jar包:

在工程下的target目录下,获取生成的jar包

启动运行程序:

①:启动dos命令窗口,进入到jar包所在目录地址

②:输入命令:java -jar springboot.jar

访问程序:

方式二:WAR包

下期总结

方式三:自动化容器

下期总结



本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码神联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1创建Maven工程
  • 2导入SpringBoot所需jar包
  • 3增加application.properties属性文件
  • 4增加启动类
  • 5启动测试
  • 6第一个接口‘Hello Boot’
  • 7整合日志框架logback
  • 8整合mybatis
  • 9测试接口
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档