SpringBoot 并不是一门新技术,只是将之前常用的Spring,SpringMVC,data-jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。
SpringBoot 就是一个工具集。
IDEA 创建 SpringBoot项目。
修改。
Demo 工程目录。
// HelloController.java
@RestController
@RequestMapping("/test")
public class HelloController {
@RequestMapping("/hello")
public String hello () {
return "hello, springboot.";
}
}
复制
启动的三种方式。
打包,然后使用命令的方式。
java -jar /Users/xx/Desktop/demo1-1.0.0.jar
// 测试。浏览器输入,http://localhost:8080/test/hello。
复制
SpringBoot 注解。
@Configuration 相当于 beans 标签。把一个普通类变成一个配置类。
@Bean 相当于 bean 标签。把方法返回对象放到 IOC 容器中。
@SpringBootApplication 是一个组合注解。@SpringBootConfiguration 就是 @Configuration 注解,代表启动类就是一个配置类。@EnableAutoConfiguration 帮助实现自动装配。
// pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
复制
// User.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
}
复制
// UserConfig.java
@Configuration
public class UserConfig {
@Bean
public User getUser() {
return new User(109091, "zs");
}
}
复制
@RestController
@RequestMapping("/test")
public class HelloController {
@Autowired
private User user;
@RequestMapping("/showUser")
public User showUser() {
return user;
}
}
// 测试。浏览器输入,http://localhost:8080/test/showUser。
复制
环境配置和多环境配置。
删除 application.properties 文件。创建application.yml、application-dev.yml、application-test.yml。
// 单环境
// application.yml
server:
port: 8089
servlet:
context-path: /boot
// 测试。浏览器输入,http://localhost:8089/boot/test/showUser。
复制
// 多环境切换
// application.yml
# 设置使用哪一个环境 ,只需要写环境的名称
spring:
profiles:
active: dev
// application-dev.yml
server:
port: 8088
servlet:
context-path: /dev
// application-test.yml
server:
port: 8089
servlet:
context-path: /test
// 测试。浏览器输入,http://localhost:8088/dev/test/showUser。
复制
打包,然后使用命令的方式切换。
// 注掉 application.yml 的主配置。
#spring:
# profiles:
# active: dev
// 命令
java -jar /Users/xx/Desktop/demo1-1.0.0.jar --spring.profiles.active=test
// 测试。浏览器输入,http://localhost:8089/test/test/showUser。
复制
@Value 注解。
// application.yml
a: texta
b:
c: textb
复制
@RestController
@RequestMapping("/test")
public class HelloController {
@Autowired
private User user;
@Value("${a}")
private String a;
@Value("${b.c}")
private String b;
@RequestMapping("/hello")
public String hello () {
return "hello, springboot.";
}
@RequestMapping("/showUser")
public User showUser() {
return user;
}
@RequestMapping("/showValue")
public String showValue() {
// return a;
return b;
}
}
复制
如果在 yml 文件中需要编写大量的自定义配置,并且具有统一的前缀。
// application.yml
ali:
aa: 1
bb: 2
cc: 3
dd: 4
复制
// AliyunProperties.java
@Data
@Component
@ConfigurationProperties(prefix = "ali")
public class AliyunProperties {
private String aa;
private String bb;
private String cc;
private String dd;
}
复制
@RestController
@RequestMapping("/test")
public class HelloController {
@Autowired
private User user;
@Value("${a}")
private String a;
@Value("${b.c}")
private String b;
@Autowired
private AliyunProperties aliyunProperties;
@RequestMapping("/hello")
public String hello () {
return "hello, springboot.";
}
@RequestMapping("/showUser")
public User showUser() {
return user;
}
@RequestMapping("/showValue")
public String showValue() {
// return a;
return b;
}
@RequestMapping("/pro")
public AliyunProperties getAliyunProperties() {
return aliyunProperties;
}
}
复制
热加载。
// pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
复制
SpringBoot 整合 Mybatis。
xml 方式。
// pom.xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
复制
// Air.java
@Data
public class Air implements Serializable {
private Integer id;
private Integer districtId;
private Date monitorTime;
private Integer pm10;
private Integer pm25;
private String monitoringStation;
private Date lastModifyTime;
}
复制
// District.java
@Data
public class District implements Serializable {
private Integer id;
private String name;
}
复制
// AirMapper.java
public interface AirMapper {
List<Air> queryAll();
}
复制
// AirMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo1.mapper.AirMapper">
<select id="queryAll" resultType="Air">
select * from air
</select>
</mapper>
复制
// application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///dbTest1?serverTimezone=UTC
username: root
password: 12345678
type: com.alibaba.druid.pool.DruidDataSource
logging:
level:
com.example.demo1.mapper: debug
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo1.entity
configuration:
map-underscore-to-camel-case: true
复制
// Demo1Application.java
@SpringBootApplication
@MapperScan("com.example.demo1.mapper")
public class Demo1Application {
public static void main(String[] args) {
SpringApplication.run(Demo1Application.class, args);
}
}
复制
// AirMapperTest.java
@SpringBootTest
@RunWith(SpringRunner.class)
public class AirMapperTest {
@Autowired
private AirMapper airMapper;
@Test
public void queryAll() {
List<Air> airs = airMapper.queryAll();
for (Air air: airs) {
System.out.println(air);
}
}
}
复制
消除 @Autowired 误报警告的方法。
注解方式。
// DistrictMapper.java
public interface DistrictMapper {
@Select("select * from district")
List<District> queryAll();
@Select("select * from district where id = #{id}")
District queryById(Integer id);
}
复制
// DistrictMapperTest.java
@SpringBootTest
@RunWith(SpringRunner.class)
public class DistrictMapperTest {
@Autowired
private DistrictMapper districtMapper;
@Test
public void queryAll() {
List<District> list = districtMapper.queryAll();
for (District district : list) {
System.out.println(district);
}
}
@Test
public void queryById() {
System.out.println(districtMapper.queryById(1));
}
}
复制
SpringBoot 整合分页。
// pom.xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
复制
// AirMapperTest.java
@SpringBootTest
@RunWith(SpringRunner.class)
public class AirMapperTest {
@Autowired
private AirMapper airMapper;
@Test
public void page() {
PageHelper.startPage(1,2);
List<Air> airs = airMapper.queryAll();
PageInfo<Air> pageInfo = new PageInfo<>(airs);
List<Air> pageInfoList = pageInfo.getList();
for (Air air: pageInfoList) {
System.out.println(air);
}
}
}
复制
SpringBoot 整合 JSP。
创建 JSP 页面。
// pom.xml
<!--jsp引擎的依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!--jstl依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
复制
// application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///dbTest1?serverTimezone=UTC
username: root
password: Liu01234
type: com.alibaba.druid.pool.DruidDataSource
mvc:
view:
prefix: /
suffix: .jsp
复制
// JspController.java
@Controller
public class JspController {
@RequestMapping("/show")
public String showIndex() {
return "index";
}
}
// 测试。http://localhost:8080/show
复制