SpringBoot
application.yml配置
基础配置
- 端口
server.port=8888
- 微服务名
spring.application.name=微服务名
- 项目允许环境
spring.profiles.active=dev
多环境application配置和定义
springboot多环境配置
- 数据库配置
# MysqL数据库配置
spring.datasource.driver-class-name=com.MysqL.cj.jdbc.Driver
spring.datasource.url=jdbc:MysqL://localhost:3306/guli?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=admin
- **
###Feign超时配置
feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=30000
@Value使用
-
xml定义
-
@Value获取值
Date和JSON格式配置
#Date类型转json后格式问题
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
JPA配置
Mybatis配置
- Mybatis的xml配置文件路径配置
#配置mapper xml文件的路径 mybatis-plus.mapper-locations=classpath:com/atguigu/eduservice/mapper/xml/*.xml
Redis配置
#---------Redis配置---------
#redis服务器ip地址
spring.redis.host=150.158.23.124
#redis端口
spring.redis.port=6379
spring.redis.database= 0
spring.redis.timeout=1800000
spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1
#最大阻塞等待时间(负数表示没限制)
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0
spring容器IOC
容器,IOC,依赖注入概念
-
容器
Spring启动时,容器会创建好已经配置的类,使用时直接从容器中获取即可。 -
IOC控制反转
将对象的创建从new改成从容器中获取对应bean对象 -
依赖注入
对象之间存在依赖关系时,可以通过配置进行依赖注入
spring容器基础使用
-
xml和注解配置示例
注解方式配置注入已经有的bean
设置bean作为首选
从application.yml中读取配置注入Bean
//springboot项目可以直接注释使用
@Resource(name = "primary")
private DataSource dataSource;
//spring项目需要用到AnnotationContext类
ApplicationContext context = new AnnotationConfigApplicationContext(DataSourceConfig.class);
DataSource dataSource = context.getBean("primary");
xml文件配置
public class HelloWorld {
public void say() {
System.out.println("hello,欢迎和【路人甲Java】一起学spring!");
}
}
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/eb6f52d1c17747909fc8d7fdb67928e3.png)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<import resource="引入其他bean xml配置文件" />
<!--创建名字为helloWorld的Bean对象-->
<bean id="helloWorld" class="com.atguigu.logservice.test.HelloWorld"/>
<!--可以给bean配置别名-->
<alias name="bean的id标识" alias="别名" />
</beans>
-
获取Bean
-
@Resource(name = "GDST_HyDao") IGDST_HyDao getGDST_HyDao;
-
使用Context 或 beanfactory获取
beanfactory //目前已经不推荐使用
Application获取bean //推荐使用//工具bean.xml文件获取 ApplicationContext context = new ClasspathXmlApplicationContext("bean.xml"); //工具bean类型获取 UserServer userServer = context.getBean(UserServer.class); //工具bean名称获取 userServer = (UserServer)context.getBean("userService"); //工具注解方式获取 ApplicationContext context1 = new AnnotationConfigApplicationContext(); //工具类型和名字获取如上一致
Bean的参数
-
完整的bean配置组成
<bean id="bean唯一标识" name="bean名称" class="完整类型名称" factory-bean="工厂bean名称" factory-method="工厂方法"/>
-
id
bean唯一标识,不可重复
(id和name可同时生效,但多个bean不能重复)
id和name都不存在时使用类名自动生成id -
name
bean的名称,不可重复 -
alias
bean别名 -
scope(重点)
Controller层接口定义
- get请求定义
/**
* Get请求定义规范 1
* 请求示例: /getWay1?id=2&name=尹文
*/
@GetMapping("/getWay1")
public Map<String,Object> getWay1(Integer id,String name){
Map<String,Object> map1 = new HashMap<>();
map1.put("resMsg","id: " + id + " name: " + name);
return map1;
}
/**
* Get请求定义规范 2
* 请求示例: /getWay2?id=2
* required:是否必须
*/
@GetMapping("/getWay2")
public Map<String,Object> getWay2(@RequestParam(name = "id",required = true) Integer id){
Map<String,Object> map1 = new HashMap<>();
map1.put("resMsg","id: " + id);
return map1;
}
/**
* Get请求定义规范 3
* 请求示例: /getWay3/2/info
* // id=2
* required:是否必须
*/
@GetMapping("/getWay3/{id}/info")
public Map<String,Object> getWay3(@PathVariable(name = "id",required = false) Integer id){
Map<String,Object> map1 = new HashMap<>();
map1.put("resMsg","id: " + id);
return map1;
}
- post请求定义
/**
* Post传递对象方式
*/
@PostMapping("/objWay")
public Map<String,Object> objWay(@RequestBody User user){
System.out.println(user);
return null;
}
/**
* 文件+对象(注:对象不能再使用@RequestBody)
* 传参方式变成form传输
* (支持zip压缩文件 和 rar5以及rar5以下版本)
*/
@PostMapping("/getSampleByConditions")
public Map<String,Object> getSampleByConditions(SampleQueryConditionsDto sampleQueryConditionsDto,
multipartfile multipartfile) throws Exception{
return null;
}
form传输示例:
Feign熔断器设置
自由定义超时错误异常返回等
package com.southgis.ibase.classifydatasource.feignimpl;
import com.southgis.ibase.utils.assertion.ExceptionAssertEnum;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Map;
/**
* @Author 尹文
* @Description
* @Date 2021/8/25 16:25
*/
@FeignClient(name = "ispatial-dag",contextId = "example",fallbackFactory =IspatialWorkFlowFallBack.class)
public interface IspatialWorkFlowClient {
/**
* 获取所有方案
*
* @param page_num 当前页码
* @param page_size 每页总数
* @param wftype 区分算子和计算方案的查询,0表示都查
* @param projectCode
* @return
*/
@GetMapping(value = "/ispatial-dag/compute/workflow")
Map<String, Object> getAllWorkflow(@RequestParam("filter") String filter, @RequestParam("page_num") Integer page_num, @RequestParam("page_size") Integer page_size
, @RequestParam("wftype") Integer wftype, @RequestParam("projectCode") String projectCode);
}
/**
* 请求时间过长时返回
*/
@Slf4j
@Component
class IspatialWorkFlowFallBack implements FallbackFactory<IspatialWorkFlowClient> {
@Override
public IspatialWorkFlowClient create(Throwable throwable) {
throw ExceptionAssertEnum.ServiceError.newException(throwable);
}
}
超时设置
设置application中的值
feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=30000