springcloudconfig添加统一配置的坑
程序员文章站
2022-05-31 18:29:44
...
为了避免发布麻烦,我们引入了springcloud的统一配置中心,不可避免的遇到一系列的坑。这里记录一下,有用到的大家可以采纳,不对也请指出。
环境:jdk 1.8
springboot:
1.5.14.RELEASE
springcloud :
Edgware.SR3
问题1:引入的pom项:
configserver:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
大概解释下不一定对:
amqp需要和rabbit配合使用才能够使用rabbit进行通信
bus是消息总线如果没有他自动刷新将无法发起通知
eureka为了动态的部署,需要将configservice的信息公布到eureka上
configserver不解释
configclient和server的区别在于
将configserver替换为:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
问题2:启动配置
这里service和client的配置开关网上很多就不说了,只说坑。
eureka:
healthcheck:
enabled: true
这玩意一定要,写在application.yml中
否则你会发现启动项目后会反复出现:
- Re-registering apps
registering service...
registration status: 204
在eureka上显示状态为unknown。
问题3:
数据库切换,我这里用的是mybatis,如果切换必须含有以下代码:
package com.webdatis.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration// 配置数据源
public class DataSourceConfigure {
@RefreshScope //不能加在类上加在类上无效
@Bean(name="dataSource")
@ConfigurationProperties(prefix="spring.datasource") // 数据源的自动配置的前缀
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
/**
* 创建会话工厂。
*
* @param dataSource 数据源
* @return 会话工厂
*/
@RefreshScope //不能加在类上加在类上无效
@Bean(name="sqlSessionFactory")
public SqlSessionFactory getSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
try {
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapping/*.xml")); // 如果不加上这句话所有的查询结果都是null
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
redis切换稍后补上
推荐阅读
-
vue项目添加多页面配置的步骤详解
-
Android RecycleView添加head配置封装的实例
-
SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用
-
vue项目添加多页面配置的步骤详解
-
SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用
-
Android RecycleView添加head配置封装的实例
-
详解Spring Cloud Feign 熔断配置的一些小坑
-
Python中使用遍历在列表中添加字典遇到的坑
-
ansible动态Inventory主机清单配置遇到的坑
-
详解Spring Cloud Feign 熔断配置的一些小坑