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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340