spring boot
1.初步认识spring
2.原理初探
2.1pom.xml
-
Spring-boot-dependencies:核心依赖在父工程中
2.2起步依赖
-
启动依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 测试依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
2.3启动程序
-
@SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
-
@SpringBootConfiguration:spring boot的配置 @Configoration:spring配置类 @Component:spring组件 @EnableAutoConfiguration:自动配置 @@AutoConfigurationPackage:自动配置包 @@Import({AutoConfigurationPackages.Registrar.class}):配置选择器注册包 @Import({AutoConfigurationImportSelector.class}):自动配置导入选择
-
2.4RestController注解
RestController=@Controller(控制器)+@ResponseBody(将请求体程序中的return直接返回到json中) @RestController public class HelloController { @RequestMapping("/hello") //每个这个被称为一个请求接口 public String hello() { System.out.println("Hello world~"); return "Hello world~"; //也就是将这个return这的值反应回去 } //这个反应回去的是字符串 @RequestMapping("/addr") public Address getAddr(){ Address addr=new Address(); addr.setProvince("广东"); addr.setCity("深圳"); return addr;//这个返回的是对象 } }
图示
2.5基于2.4的结果进一步改造
2.5.1why?
------因为上述返回结果可能各式各样
2.5.2how?
-----统一结果封装类
-
统一结果封装类
-
package com.example.hang.pojo; public class Result { private Integer code; private String msg; private Object data; public Result(){ } public Result(Integer code,String msg,Object data){ this.code=code; this.msg=msg; this.data=data; } public Integer getCode() { return code; } public String getMsg() { return msg; } public Object getData() { return data; } public void setCode(Integer code) { this.code = code; } public void setMsg(String msg) { this.msg = msg; } public void setData(Object data) { this.data = data; } public static Result success(Object data){ return new Result(1,"success",data); } public static Result success(){ return new Result(1,"success",null); } public static Result error(String msg){ return new Result(0,"msg",null); } public String toString(){ return "Result{"+ "code"+code+ ",msg='"+msg+'\''+ ",data="+data +"}"; } }
-
-
使用实例
-
RestController=@Controller(控制器)+@ResponseBody(将请求体程序中的return直接返回到json中) @RestController public class HelloController { @RequestMapping("/hello") //每个这个被称为一个请求接口 public String hello() { //方式一:直接return Result类 return new Result(1,"success","Hello world");//也就是将这个return这的值反应回去 //方式二:直接调用构造函数 return Result.success("Hello world"); } @RequestMapping("/addr") public Address getAddr(){ Address addr=new Address(); addr.setProvince("广东"); addr.setCity("深圳"); return Result.success(addr);//这个返回的是对象 } }
-
3.程序执行
3.1原始方式
3.2springboot方式
3.2.1简单参数
-
图像
-
设计到了(@RequestParam的注解)---用于解决后端类型与前端类型不同的情况)
3.2.2实体参数
-
简单实体参数
-
复杂实体参数
3.3数组集合参数(一般用于复选框)
3.3.1数组参数
图示
3.3.2集合参数
图示
3.4日期参数
图示
3.5json参数
图示
3.6路径参数
图示
4.分层结耦
4.1三层架构
-
controller层
-
Service层
-
Dao层
4.2分层结耦
4.2.1why?
对于下面图片每当调用service层中的类名改变时,他的controller层所建立的对象也要改变
4.2.2how?
引入spring boot中的控制反转和依赖注入如下图所示
4.3IOC&DI入门
4.3.1Service层和Dao层的实现类,交给IOC容器管理
4.3.2为controller和service层注入运行时,所依赖对象
4.4IOC详解
4.4.1Bean的声明方式
4.4.2Bean扫描:
规则:启动类中@Spring Boot Application自带的@ComponentScan --只扫描当前包和当前子包,要扫描别的包要自己手动声明@ComponentScan()