SpringBoot

application.yml配置

基础配置

  1. 端口
server.port=8888
  1. 微服务名
spring.application.name=微服务名
  1. 项目允许环境
spring.profiles.active=dev

多环境application配置和定义
springboot多环境配置

  1. 数据库配置
# 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
  1. **

###Feign超时配置

feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=30000

@Value使用

  1. xml定义

    在这里插入图片描述

  2. @Value获取

    在这里插入图片描述

Date和JSON格式配置

#Date类型转json后格式问题
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8

JPA配置


Mybatis配置

  1. 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,依赖注入概念

  1. 容器
    Spring启动时,容器会创建好已经配置的类,使用时直接从容器中获取即可。
  2. IOC控制反转
    将对象的创建从new改成从容器中获取对应bean对象
  3. 依赖注入
    对象之间存在依赖关系时,可以通过配置进行依赖注入

spring容器基础使用

  1. 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>
  1. 获取Bean
    • SpringBoot使用@Autoware,自动按照type获取bean

      在这里插入图片描述

    • @Resource,根据名称获取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的参数

  1. 完整的bean配置组成

    <bean id="bean唯一标识" name="bean名称" class="完整类型名称" factory-bean="工厂bean名称" factory-method="工厂方法"/>
    
  2. id
    bean唯一标识,不可重复
    (id和name可同时生效,但多个bean不能重复)
    id和name都不存在时使用类名自动生成id

  3. name
    bean的名称,不可重复

  4. alias
    bean别名

  5. scope(重点)

Controller层接口定义

  1. 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;
    }
  1. 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

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...