spring boot
在 spring 基础上进行了简化,提供一些配置的默认值
1. 创建spring boot项目
- 使用向导(web 页面), 要联网
- 使用 maven 项目, 需要配置 pom.xml
pom.xml 参考:
<!-- 1. parent 中是一些公共的pom 配置, 我们的项目从中继承即可 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<!-- 2. 设置 jdk 版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 3. 添加 spring boot 相关依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 4. 添加打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
springboot 推荐的打包方式是 jar
2. 编写spring boot代码及运行
需要在入口类上加一个注解 @SpringBootApplication
然后在 main方法中使用, 来启动springboot 应用程序
SpringApplication.run(启动类.class, args);
- 入口类必须有一个 package,不能是空 package
- 目标结构
com
westos
MyApplication (入口类)
controller
|- 控制器 正确位置
service
|- 服务器 正确位置
controller
|-控制器 错误位置!!!
fat jar 打包之后,包含了所有第三方的jar,要运行这个jar,使用如下命令
java -jar jar包名字
3. spring boot 整合mybatis
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
mapper 接口上要添加一个 @Mapper 注解
在 application.properties 配置文件中加入连接数据库的信息
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
4. banner 可以自定义
- 进入网站 http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type Something 生成艺术字
- 放入 resources/banner.txt
5. lombok
可以加在模型类上,帮助生成 get,set,toString,hashCode,equals等方法
- 在项目中添加 lombok 依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
- 在编辑器上安装 lombok
- idea 插件
如果能联网,直接进入settings->plugins-> marketplace 搜索 lombok
不能联网,找到插件压缩包settings->plugins-> install plugin from disk - eclipse 插件
@Data // 生成 get, set, toString, hashCode, equals
@AllArgsConstructor // 根据所有的属性, 生成一个带参的构造方法
@NoArgsConstructor // 生成一个无参构造
@Builder // 生成一个建造器对象
@Getter // 只生成 get方法
@Setter // 只生成 set方法
public class Student {
private int sid;
private String sname;
private Date birthday;
private String sex;
public static void main(String[] args) {
Student stu = Student.builder().sid(1).sex("男").sname("张三").birthday(new Date()).build();
}
}
@Slf4j 注解 作用为当前的类生成一个日志对象
@Slf4j // 相当于生成了private static final Logger log = LoggerFactory.getLogger(StudentService.class);
public class StudentService {
// 自己的方法中,就可以使用 log 的日志对象来记录日志了
}
6. spring devtools
<!-- 开发工具, 让修改代码快速生效, 提高服务器启动速度 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
在idea 修改代码之后,执行 build-> build module, 会触发服务的重新启动,让修改生效
idea
- ctrl+shift+a
- 搜索 registry…
- 搜索 compiler.automake.allow.when.app.running 打钩
7. spring boot 监控工具
actuator
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
默认已经开启了两个端点 /info, /health
如果开发中希望使用更多的端点 applicaiton.properties
management.endpoints.web.exposure.include=* // * 代表暴露所有端点
management.endpoints.web.exposure.include=info,health,beans
- 其中 /beans 是用来用来检测spring容器中所有对象
- 其中 /env 是显示当前所有系统环境变量、java变量的一个端点、springboot 自己的配置信息
生产环境下不要暴露这些端点
8. 新的管理 bean 的方式
- xml
<bean class="类">
- 给类上添加注解 @Component, @Service, @Controller, @Repository, @Mapper, @RestController,配合扫描找到他们管理
- @Bean 配合工厂方法,生成对象交给spring容器管理
// <bean id="userService" class="UserService">
// 工厂方法, 生产一个希望由 spring 管理的对象
// 方法名相当于 bean 的id,方法返回的对会放入容器,其他地方可以使用@Autowired 对它进行依赖注入
// 此方法只会被调用一次,因为默认情况要保证userService对象是单例的
@Bean
public UserService userService() {
return new UserService();
}
如果希望把这些bean的定义集中管理,新建一个 配置类
@Configuration
public class 配置类 {
@Bean
public 工厂方法1() {}
@Bean
public 工厂方法2() {}
}
9. 自动创建数据库结构,导入数据
resources
schema.sql – 存放删表建表语句 ddl
data.sql – 存放 insert 数据的 sql
需要在 application.properties
spring.datasource.initialization-mode=always 每次启动 spring boot应用程序时,总会执行 schema.sql 和 data.sql
10. spring boot 集成 jdbc
JdbcTemplate jdbc模板类 (模板模式)
ctrl + alt + B 列出某个接口的所有实现类
- 加入 start-jdbc 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- 为 dao 类注入jdbcTemplate属性
@Repository
public class Dao类 {
@Autowired
private JdbcTemplate jdbc;
// jdbc.update(sql, sql中?值) 执行增、删、改
// jdbc.query(sql, rowMapper, sql中?值) 执行查询结果为多行时
// jdbc.queryForObject(sql, rowMapper, sql中?值) 执行查询结果为一行时
}
BeanPropertyRowMapper 当列与java属性一致的情况下,用它来简化映射
11. 事务控制
jdbc, mybatis
要启用事务管理,在入口类上加一个 @EnableTransactionManagement
需要事务的方法上加上 @Transactional
12. 面向切面编程
要启用面向切面编程,在入口类上加一个 @EnableAspectJAutoProxy