编写Spring Boot启动类
package com.rz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/***
* 启动类
*/
@SpringBootApplication //告诉程序是个spring boot项目
@RestController //表示这是一个提供restful风格服务的类
public class DemoApplication {
/***
* spring标准启动方式
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
@GetMapping("/hello")
public String hello(){
return "hello spring security";
}
}
这样我们可以运行第一个SpringBoot项目了,但是还有一点小错误:
可能出现的问题:
Cannot determine embedded database driver class for database type NONE
原因:maven依赖中添加了jdbc驱动,但是项目里面没有指定具体的数据库连接
解决方法:在resources目录下新建application.yml文件,添加以下内容:
spring:
datasource:
password: 123456
driver-class-name: com.mysql.jdbc.Driver
username: root
url: jdbc:mysql://192.168.0.137:3306/test_zq?useUnicode=true&characterEncoding=utf-8
可能出现的问题:
No Spring Session store is configured: set the ‘spring.session.store-type’ property
原因:maven依赖中添加了spring-session的依赖,但是spring session的存储没有被配置
解决方法:暂时在application.yml文件中关闭,添加以下内容:
spring:
datasource:
password: root
driver-class-name: com.mysql.jdbc.Driver
username: root
url: jdbc:mysql://192.168.0.137:3306/test_zq?useUnicode=true&characterEncoding=utf-8
session:
store-type: none
server:
port: 80
现在项目可以进行访问了,但是系统会默认弹出一个http basic的身份认证框,这是由于maven中依赖了Spring Security的jar包,默认是开启身份认证的,有两种方式可以解决:
1.在application.yml中添加配置:
security:
basic:
enabled: false
2.在每次项目启动的时候,用户名是user,系统会自动生成一个密码,类似下面这样的:
Using default security password: 86d43b9f-7926-43a3-bffa-6b238c54a65b
项目打包:
方式一:在idea的右侧选择Maven Projects,选择父工程rz-security下的Lifecycle下的package命令。
方式二:点击右上角的点击Edit Configurations…图标,然后点击“+”号,选中maven,选择好项目路径,在name中自定义命令名,在Command line填写执行命令,完成即可运行。
这两者方式都会在每一个工程下下的target文件夹下生成一个jar包文件,但是这些jar包是不符合要求的,不能运行,我们这个工程是war包工程,这样打包有许多依赖的jar包没有打进来,我们需要的是一个可执行的jar包文件
解决办法:
在rz-security-demo的pom.xml文件中添加插件,它会按照Springboot特有的方式进行打包会生成一个可执行jar包
<?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">
<parent>
<artifactId>rz-security</artifactId>
<groupId>com.rz.security</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../rz-security/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>rz-security-demo</artifactId>
<dependencies>
<dependency>
<groupId>com.rz.security</groupId>
<artifactId>rz-security-browser</artifactId>
<version>${rz-security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- wiremock -->
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.3.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>demo</finalName>
</build> <!--最终jar包名-->
</project>
其实我们可以在命令行启动可执行jar包:先进入jar包的所在目录,然后输入:
java -jar demo.jar
这样项目启动 了,它和在idea中 main函数中启动是一样的
说明:Springboot是不需要tomcat运行环境的,相反tomcat内嵌在可执行jar包里面