Idea中隐藏指定文件或指定类型文件
小结:
小结:
@SpringBootApplication
public class SpringBootApplication {public static void main(String[] args) {SpringApplicaiton.run(SpringBootApplicaiton.class,args);}
}
小结:
内置服务器
小结:
REST,表现形态状态转换
传统风格资源描述形式
http://localhost/user/getById?id=1
http://localhost/user/saveUser
REST风格描述形式
http://localhost/user/1
http://localhost/user
优点:
隐藏资源的访问行为,无法通过地址得到对资源是何种操作
书写简化
按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
http://localhost/users 查询全部用户信息 GET (查询)
http://localhost/users /1 查询指定用户信息 GET (查询)
http://localhost/users 添加用户信息 POST(新增/保存)
http://localhost/users 修改用户信息 PUT(修改/更新)
http://localhost/users /1 删除用户信息 DELETE (删除)
注意事项
上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts…
@RequestMapping(value = "/users", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody User user) {System.out.println("user sava..." + user);return "user save";
}@RequestMapping(value = "/users", method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user) {System.out.println("user update..." + user);return "user update";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String update(@PathVariable Integer id) {System.out.println("user delete..." + id);return "user delete";
}
详解
@RequestMapping(value = "/users", method = RequestMethod.POST)
@ResponseBody
public String save(@RequestBody User user) {System.out.println("user save..." + user);return "user save";
}
value:访问请求路径
method:http请求动作,标准动作(GET/POST/PUT/DELETE)
@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id) {System.out.println("user delete..." + id);return "user delete";
}
@RequestBody @RequestParam @PathVariable
区别
@RequestParam用于接收url地址传参或表单传参
@RequestBody用于接收json数据
@pathVariable用于接收路径参数,使用{参数名称}描述路径参数
应用
开发中,发送请求参数超过1小时,以json格式为主,@RequestBody应用较广
如果发送非json格式数据,选用@RequestParam接收请求参数
采用RESTful进行开发,当参数数据较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
@RestController
public class BookController {
}
@GetMapping("/{id}")
public String getById(@PathVariable Interger id) {System.out.println("book getById,,,"+id);return "book getById";
}
小结:
修改服务器端口
server.port=80
关闭运行日志图标(banner)
spring.main.banner-mode=off
设置日志相关
logging.level.root=debug
SpringBoot默认配置文件application.properties
http://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties
appliction.properties
server.port=80
appliction.yml
server:port:81
appliction.yaml
server:port:82
小结:
1、SpringBoot提供了3种配置文件的格式
2、配置文件间的加载优先级
3、不同配置文件中相同配置按照假造优先级相互覆盖,不同配置文件中不同配置全部保留
4、指定SpringBoot配置文件
yaml语法规则
字面值表示方式
boolean: TRUE //TRUE,true,True,FALSE,false,False均可
float: 3.14 //6.8523015e+5 支持科学计数法
int: 123 //0b1010_0111_0100_1110 支持二进制、八进制、十六进制
null: ~ //使用~表示null
string: HelloWorld //字符串可以直接书写
string2: "Hello World" //可以使用双引号包裹特殊字符
date: 2018-02-17 //日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 //时间和日期之间使用T连接,最后使用+代表时区
数据表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
subject:- Java- 前端- 大数据
enterprise:name: itcastage: 16subject:- Java- 前端- 大数据likes: [王者荣耀,刺激战场] #数组书写缩略格式
users: #对象数组格式- name: Tomeage: 4- name: Jerryage: 5
users: #对象数组格式二-name: Tomage: 4-name: Jerryage: 5
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]
小结:
1.yaml语法规则
2.注意属性名冒号后面与数据之间有一个空格
lession: SpringBootserver:port: 82enterprise:name: itcastage: 16tel: 400618400subject:- Java- 前端- 大数据
@RestController
@RequestMapping("/boots")
public class BookController {@Value("${lesson}")private String lessonName;@Value("${server.port}")private int port;@Value("${enterprise.subject[1]}")private String[] subject_01;
}
总结:
1.使用@Value配合SpEL读取单个数据
2.如果数据存在多层级,依次书写层级名称即可
baseDir: /usr/local/firecenter:dataDir: ${baseDie}/datatempDir: ${baseDir}/tmplogDir: ${baseDir}/logmsgDie: ${baseDir}/msgDir
属性值中如果出现转义字符,需要使用双引号包裹
lesson: "Spring\tboot\nlesson"
总结:
lession: SpringBootserver:port: 82enterprise:name: itcastage: 16tel: 400618400subject:- Java- 前端- 大数据
@RestController
@RequestMapping("/books")
public class BookController {@Autowiredprivate Environment env;@GetMapping("/{id}")public String getById(@PathVariable Integer id) {System.out.println(env.getProperty("lesson")); System.out.println(env.getProperty("enterprise.name"));System.out.println(env.getProperty("enterprise.subject[1]"));return "hello"; }
}
总结:
1.使用Enviroment对象封装全部配置信息
2.使用@Autowired自动装配数据到Enviroment对象中
lession: SpringBootserver:port: 82enterprise:name: itcastage: 16tel: 400618400subject:- Java- 前端- 大数据
@Data
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {private String name;private Integer age;private String[] subject;
}
datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCusername: rootpassword: root
@Data
@Component
@ConfigurationProperties(prefix = "datasource")
public class Enterprise {private String driverClassName;private String url;private String userName;private String password;
}
总结:
1.使用@CongigurationProperties注解绑定配置信息到封装类中
2.封装类需要定义为Spring管理的bean,否则无法进行属性注入
@SpringBootTest
class SpringbootApplicationTests {@Autowiredprivate BookService bookService;@Testpublic void testSave(){bookService.save();}
}
@SpringBootTest
class SpringBootApplicaitonTests {}
总结:
1.导入测试对应的starter
2.测试类使用@SpringBootTest修饰
3.使用自动装配的形式添加要测试的对象
@SpringBootTest(classes = SpringbootApplication.class)
class SpringbootApplicationTest {}
注意事项:
如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的设置,也就是省略classes的设定
总结:
1.测试类如果存在于引导类所在包或子包中无需指定引导类
2.测试类如果不存在引导类所在的包或子包中需要通过classes属性指定引导类
步骤:
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_dbusername: rootpassword: root
4.定义数据层接口与映射配置
@Mapper
public interface UserDao {@Select("select * from user")public List getAll();
}
5.测试类中注入dao接口,测试功能
@SpringBootTest
class SpringbootMybatisApplicationTests {@Autowiredprivate BookDao bookDao;@Testpublic void testGetById(){Book book = bookDao.getById(1);System.out.println(book);}
}
总结:
1.勾选MyBatis技术,也就是导入MyBatis对应的starter
2.数据库连接相关信息转换成配置
3.数据库SQL映射需要添加@Mapper被容器识别到
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCusername: rootpassword: root
总结:
1.MySQL8.X驱动强制要求设置时区
1.手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrepository获取
com.baomidoumybatis-plus-boot-starter 3.4.3
注意事项:
由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version
2.定义数据层接口与映射配置,继承BaseMapper
@Mapper
public interface UserDao extends BaseMapper {
}
总结:
1.手工添加Mybatis-Plus对应的starter
2.数据层接口使用BaseMapper简化开发
3.需要使用的第三方技术无法通过勾选确定时,需要手工添加坐标
导入Druid对用的starter
com.alibabadruid-spring-boot-starter 1.2.6
变更Druid的配置方式
spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCusername: rootpassword: root
总结:
1.整合Druid需要导入Druid对应的starter
2.根据Druid提供的配置方式进行配置
3.整合第三方技术通过方式
1.对SpringBoot项目打包(执行Maven构建指令package)
mvn package
2.运行项目(执行启动指令)
java -jar springboot.jar
注意事项:
jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
org.springframework.boot spring-boot-maven-plugin
总结:
1.SpringBoot工程可以基于java环境下独立运行jar文件启动服务
2.SpringBoot工程执行mvn名利package进行打包
3.执行jar命令:java -jar 工程名.jar
window端口被占用
#查询端口
netstat -ano#查询指定端口
netstat -ano |findstr "端口号"#根据进程PID查询进程名称
tasklist |findstr "进程PID号"#根据PID杀死任务
taskkill -f -pid "进程PID号"#根据进程名称杀手任务
taskkill -f -t -im "进程名称"
1.使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性
2.临时属性添加方式:java -jar 工程名.jar –属性名=值
3.多个临时属性之间使用空格分隔
4.临时属性必须是当前boot工程支持的属性,否则设置无效
带属性启动SpringBoot程序,为程序性添加运行属性
Edit Configrations->Configuration->Program arguments
--server.port=80 --logging.level.root=warn
通过编程形式带参数启动SpringBoot程序,为程序添加运行参数
public static void main(String[] args) {String[] arg = new String[1];arg[0] = "--server.port=8080";SpringApplication.run(SSMPApplication.class,arg);
}
不携带参数启动SpringBoot程序
public static void main(String[] args) {SpringApplication.run(SSMPApplication.class);
}
总结:
启动SpringBoot程序时,可以选择是否使用命令行属性为SpringBoot程序传递启动属性
上一篇:网络编程学习一
下一篇:【安卓开发】安卓广播机制