如何创建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
步骤:
Ctrl+N-->选择Maven project -->勾选‘Create a Simple project’-->Next-->输入group ID\Artifact ID\Version\Packaging-->Finish
图示:
结构如图:
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>
application.properties: 其它配置属性信息,点击这里
内容为:
server.port=8010
server.contextPath=/springboot
添加类:MainServer.java:
@SpringBootApplication
public class MainServer{
public static void main(String[] args) {
SpringApplication.run(MainServer.class, args);
}
}
启动MainServer.java中main方法:
右键-->run as/debug as--->略,此处呵呵哒
查看控制台日志:
如果显示如图所示,则代表搭建成功
①:在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);
}
}
测试结果:
①:导包
②:增加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">
<!--<!–格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符–>-->
<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);
}
}
因为后续随着业务的越来越多,功能模块的不断增加,肯定不能在启动类中写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;
}
}
①:启动主函数
②:访问接口
结果:
如何发布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包
下期总结
方式三:自动化容器
下期总结