springboot
springboot
全新框架, 简化web配置,
优点:快速开发,开箱即用,简化spring配置,启动方便维护方便
https://www.majiaxueyuan.com/course/12
https://blog.csdn.net/qq_32923745/article/category/7185049
不需要tomcat
创建maven工程,导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1.入门案例
(1)启动方式一:
只创建一个HelloController.class
@RestController
@EnableAutoConfiguration
public class HelloController {
	@RequestMapping("/hello")
	public String hello(){
		return "Hello";
	}
	public static void main(String[] args) {
		SpringApplication.run(HelloController.class, args);
	}
}
注意:@RestController和@Controller的区别:
@RestController 返回JSON格式数据,,@Controller 只返回页面,显示用
运行http://localhost:8080/hello 产生结果。
(2)启动方式二: 常用启动方式
创建一个HelloController.class,,package com.majiaxueyuan.controller;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "Hello";
}
}
创建一个APP类,package com.majiaxueyuan;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
运行结果一样
2.访问静态文件方法
static 文件下,是默认访问扫描, 用来创建css/js/img 等文件。
所有的资源文件都应该在src/main/resources文件夹下面,但在SpringBoot中,系统默认扫描静态文件在static
或者public文件夹下,这里我们在src/main/resources目录下创建一个static文件夹,我们copy一张图片到static目录下,将图片命名为majiaxueyuan.png,我们启动项目并通过浏览器进行访问这张图片。

http://localhost:8080/img/s.png 可以访问到
3.捕获异常:
产生异常时,创一个Exception包
创建 GloableExceptionAop.calss 类
@ControllerAdvice
public class GloableExceptionAop {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public String runtimeException(){
return "出现异常";
}
}
结果:当产生异常时,页面返回 “出现异常”
4.Thymeleaf 引擎模版、前台数据展示
注意在前端的写法
JSP在运行时将要编译成一个Servlet,这样对服务器是一个大大的消耗。而今天,我们只需要使用前台模版引擎,这种方式就好比静态页面的方式,不需要占用服务器太多的资源。不在使用JSP
以往用JSP,但繁琐不是轻量级,springboot不推荐使用,推荐用这个引擎模版,例如 有 Thymelea 、Freemake 、Groovy 等,都是原生的html,相当于静态文件。
备注:(错误案例:
Description:
The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured。
方法:修改端口,     在application里边加入server.port=8888,改变端口)
书写方式: th:
语法:。。。。
案例:
(1)application.properties中配置
#thymeleaf start
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
#thymeleaf end
(2)导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
(3)创建类
@Controller
public class PageIndexController {
@RequestMapping("/index")
public String indexdemo(Model model){
List<String> list=new ArrayList<String>();
list.add("sd");
list.add("d");
list.add("s");
model.addAttribute("name","sdsdsada");
model.addAttribute("list",list);
model.addAttribute("cdfd","hjfhfgh");
return "index";
}
(4)templates下 index.html
<table>
<tr>
<td>编号</td>
</tr>
<tr th:each="l : ${list}">
<td th:text="${l}"></td> //Thymeleaf 的语法写法
</tr>
</table>
(5)结果迭代显示
5.springboot集成mybatis
(1)导入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
(2)application.properties中配置
#mybatis
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
(3)创建UserMapper
@Mapper
public interface UserMapper {
@Select("select * from user where id=#{id} ")
User getUserById(@Param("id") Integer id);
//(id,username,sex)
@Insert("insert into user values(NULL,#{username},#{sex});")
void insertUser(@Param("username") String username,@Param("sex") String sex);
}
(4)User.class
public class User {
    private int id;
    private  String username;
    private String sex;
   get/set方法
(5)在HelloController中配置
@RestController
public class HelloController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/getuser")
public Object getUser(Integer id){
  return      userMapper.getUserById(id);
}
@RequestMapping("/insert")
 public  Object  insert(String username,String sex){
    userMapper.insertUser(username,sex);
    return "success";
}
(6)数据库创建user表id.username.sex字段
(7)显示完成,案例成功。
6.springboot事务管理
@Transactional 注解  在serviceImpl类添加
方法执行完后若无异常再执行SQL语句。

什么是事物???
是指多个SQL作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
原子性:对于其数据修改,要么全都执行,要么全都不执行。
一致性:事务在完成时,必须使所有的数据都保持一致状态。
隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。(不能同时操作一个数据)
持久性:事务完成之后,它对于系统的影响是永久性的。
7.配置多数据库(#)
连接多个数据库

一般不使用
8.集成MybatisPlus
不用写一条SQL
官网:http://baomidou.oschina.io/mybatis-plus-doc/
MybatisPlus是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MP特性:无侵入,依赖少,损耗小,防SQL注入,通用CRUD,多种主键策略,代码生成,内置分页插件。
通用CRUD:集成BaseMapper就可以使用MP封装的CRU
多种主键策略:IdType.AUTO(自动),IdType.INPUT(用户输入),IdType.ID_WORKER(自动),IdType.UUID(自动)。配置方法,主键ID上加上注解:@TableId(value = "ID", type = IdType.AUTO),一般情况下推荐大家使用自动增长主键。
内置分页插件:Page内置分页插件。
代码生成:MP自带代码生成工具,可以从Controller层直接生成到mapper层,包括实体类,让我们只关心请求地址和业务处理。
1.Mybatis-Plus的类MybatisPlusConfig 配置
2.
@Mapper
public interface UserMapper extends BaseMapper<User>
}
ybatisPlus使用介绍:
1.分页方法没做
9.集成Lombok(未完成)
1.安装2.导入依赖
@Data :注解在类上;提供类所有属性的 getter 和 setter 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
10.shiro
Apache Shiro是Java的一个安全框架。对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。
Shiro有哪些功能:身份认证/登录,授权,会话管理,加密,Web支持。
记住这么一点,Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;通过Realm让开发人员自己注入。
11.全局日志管理(未完成)
SpringBoot使用AOP统一处理请求日志
传统打印日志方法:1.@Log4j 2. log.info();
1.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.
新建一个包com.majiaxueyuan.log专门用来放我们的日志记录,代码如下:文档中有记载
12.springboot定时任务 @Scheduled
传统方式是使用线程
springboot中
1.在service中新建一个类ScheduledTes
@Component
public class ScheduledTest {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss")
@Scheduled(fixedRate = 2000)
public void scheduled() {
System.out.println("码家学院提示你==》现在时间:" + dateFormat.format(new Date()))
}
}
2.在主函数启动类上开启定时器 @EnableScheduling
13.springboot实现异步 Async
1.在service中新建一个类 AsyncTest
@Component
public class AsyncTest {
@Async
public void async(){
	System.out.println("异常");
}
2.Controller类中添加注入
@Autowired
	private AsyncTest asyncTest;
然后在方法中调用 asyncTest.async();
3.主函数类APP中添加注解 @EnableAsync
14.springboot自定义参数
1.在 application.properties配置中添加
例如:
2.在Controller类中添加注入
 @Value("${name}")
	private String name;
3.方法中添加如下,返回结果为 hellolon
 @RequestMapping("/hello")
	public String hello() {
		return "hello"+name;
	}
15.启动端口访问路径
只需要在配置文件中添加访问端口和访问路径就OK,一般添加在配置文件开头
server.port=9090
server.context-path=/springboot
现在只能用http://127.0.0.1:9090/springboot才能访问到项目。
备注:添加快捷提示,
1.https://spring.io/tools下载工具
2.install 中添加工具包,只需要添加IDE部分包
16.SpringBoot配置文件yml
SpringBoot中另外一种格式的配置文件,名为application.yml的配置文件。
server:
port: 80
context-path: /springboot
spring:
datasource:
username: root
password: admin
url: jdbc:mysql://localhost:3306/springboot_mjxy?characterEncoding=utf8
thymeleaf:
cache: false
mode: LEGACYHTML5
prefix: classpath:/templates/
suffix: .html
如果没有高亮,请在eclipse中安装SpringToolsSuits。然后重启eclipse,选择打开方式就可以高亮了。
17.多环境区分
我们可以创建多个配置文件,application-lx.yml,只需要在源配置文件上面增加下面的一个配置
| spring:下面添加两行 profiles: active: lx | 
这样系统就会优先去扫描配置文件是application-lx.yml的配置文件。
18.打包发布
1.项目右键-->Run As..-->Maven Build,打出clean package。、
2.如果报错没有主清单,在pom文件中新增下面代码
| <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <maimClass>com.majiaxueyuan.App</maimClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 
 
 | 
3.结果产生的jar包用doc 打开,cmd,输入 java -jar 拖动jar进入doc即可。
 
                    
                     
                    
                 
                    
                

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号