• Category Archives: SpringBoot

SpringBoot2.1.1使用Zuul创建SpringCloud微服务Gateway网关

1、在新的SpringBoot项目中的pom.xml引入如下依赖:

2、在pom.xml的project中加入SpringCloud的版本管理配置:

3、编辑配置文件application.propertites:

4、最后在application启动类中加入@EnableDiscoveryClient和@EnableZuulProxy注解:

 

SpringBoot2.1.1微服务架构引入SpringCloudSecurity安全认证

1、在eureka服务器的pom.xml中引入依赖:

2、创建密码安全认证密码匹配规则类MyPasswordEncoder.java:

3、在eureka服务器中创建配置类SecurityConfig.java:

4、启动服务,访问eureka服务中心,使用admin:123456进行登录,成功进入eureka控制台

5、对微服务提供者的application.propertites说引用的eureka服务中心地址的前面加入“admin:123456@”,如:http\://admin:123456@localhost\:8761/eureka/ ,然后启动即可~

SpringBoot2.1.1使用SpringCloud的Feign调用Eureka微服务并开启Hystrix熔断机制

1、先在pom.xml中引入如下依赖:

2、在pom.xml中的<project></project>之间增加以下关于springcloud的版本管理:

3、在application.propertites中增加如下配置:

4、在application启动入口增加@EnableFeignClients注解:

5、创建FeignClient客户端:

6、编写调用微服务的Controller:

7、编写熔断处理方法:

8、启动服务,访问对应的api,分别在微服务开启、关闭的时候调用API,查看结果即可。

微服务的技术栈

微服务条目 落地技术
服务开发 SpringBoot,Spring,SpringMVC
服务配置与管理 Netflix公司的Archaius、阿里的Diamond等
服务注册与发现 Eureka、Consul、Zookeeper等
服务调用 Rest、RPC、gRPC
服务熔断器 Hystrix、Envoy等
负载均衡 Ribbon、Nginx等
服务接口调用(客户端调用服务的简化工具) Feign等
消息队列 Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理 SpringCloudConfig、Chef等
服务路由(API网关) Zuul等
服务监控 Zabbix、Nagios、Metrics、Specatator等
全链路追踪 Zipkin、Brave、Dapper等
服务部署 Docker、OpenStack、Kubernetes等
数据流操作开发包 SpringCloud Stream(封装与Redis,Rabbit,Kafka等发送接收消息)
事件消息总线 SpringCloud Bus

 

使用SpringBoot2.1.1配置SpringCloudConfig服务

配置中心服务器:

1、在pom.xml中加入如下依赖:

注意高亮行,这个version需要和springboot的版本号一致。

2、在启动类中加入@EnableConfigServer注解

3、创建bootstrap.yml配置文件,本地配置如下:

4、在项目的resources(class)目录中创建config文件夹,并在里面新增application-dev.properties文件,内容如下:

5、启动并访问 http://localhost:3000/application-dev.properties,能看到

配置客户端:

1、在pom.xml中加入如下依赖:

同样的,version那里切记要跟springboot的版本一致。

2、创建bootstrap.yml配置文件,配置如下:

3、创建测试用的controller

4、启动并访问http://localhost:8081/test,便能看到client获取server的class中config里的配置文件对应的a.url配置

springboot2.1.1+hibernate5.0.12开启数据库二级缓存

首先加入依赖到pom.xml:

然后在hibernate.xml配置文件中加入以下参数:

接着创建二级缓存配置文件ehcache.xml:

最后在需要开启缓存的pojo类中加入注解cache注解:

配置完毕,启动项目,输出hibernate的sql执行语句,会发现第二次查询相同对象时不再执行查询语句。

创建一个基于SpringBoot2.1.x的JavaFX程序

1.创建SpringBoot项目

到 https://start.spring.io/ 创建一个SpringBoot2.1.x项目,解压后使用MyEclipse2015导入为maven项目~

2.引入JavaFX

对SpringBoot入口程序Application进行改造,继承javafx的application类,并引入接口CommandLineRunner, Consumer<Stage>,接着加入如下代码(高亮部分):

然后启动,出现如下界面则为成功:

ac571e727fe9d73b3500c54a3e2117c

 

3.增加预加载页面

在pom.xml加入如下依赖:

 

新增一个启动入口文件如MainApplication.java用于展示欢迎界面,代码如下:

在预加载完成后还要再正式界面中隐藏掉本界面,因此要在原来的application类的stage.show()前面加入如下代码:

然后注释掉原来的application启动类中的main方法:

最后启动刚刚新建的MainApplication.java,便会出现中间界面:

d294a0cca4b571832aaa7b9c70f8363

好了,大功告成。如果还需要引入sqlite数据库,则可以继续往下操作。

4.引入hibernate并使用sqlite数据库

在MainApplication中的 下方加入如下代码,以提示sqlite是否存在:

再pom.xml中加入如下依赖:

 

对原来的Application进行修改(加入高亮部分):

增加sqlite的方言类SQLiteDialect.java:

增加配置文件application.properties用于配置数据库(注意高亮行,要指向刚刚创建的方言类SQLiteDialect.java):

好了,运行MainApplication看看效果:

639fccfb32a10d16ee5a29089e0094f

如图所示,输入sessionFactory不为空,则注入成功,后面大家自由发挥吧!

5.补充:记得指定maven打包时的启动入口

在pom.xml中加入如下高亮代码

大功告成!

当在SpringBoot使用Redis的Session共享功能时,@EnableScheduling始终生效的问题。

我在调试项目的redis共享时,遇到了这种情况:

当我需要使用Redis来管理SpringBoot的Session时,会加入如下依赖:

这个依赖会让启动类中的@EnableScheduling设定无效,就是说,此时无论有没有@EnableScheduling,系统中的所有定时器均会生效。

唉~具体原因,我猜是因为这个功能需要用到定时器,所以会默认开启了呗~折腾了我半天,真浪费时间~

SpringBoot2.1.1整合hibernate5.0.12使用SessionFactory

1、在pom.xml中加入如下依赖:

如果pom.xml中有如下jpa依赖,记得清注释以下内容:

如果出现FilterRegistrationBean报错,则意味着缺少SpringMVC的filter依赖,办法之一是引入含有该filter的依赖(eureka的server依赖也是包含的):

 

2、在application.properties中加入如下配置:

如果在低版本SpringBoot中进行配置,则可能会遇到错误“Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true”,此时则需要在application.properties补充配置:

因为SpringBoot的SessionFactory会自动注入默认的Transactional事务管理器,但这个事务管理器搭配hibernate的SessionFactory会出现数据库连接池线程卡死的问题,即假如配置线程池的连接数为10,一旦连接数大于10,则线程池会出现卡死的情况,因此我们需要自行配置hibernate的事务管理器来覆盖SpringBoot原有的Transactional事务管理器。

3、在SpringBoot的启动入口类上加入注解@ImportResource(“classpath:hibernate.xml”):

4、在resources目录中加入配置文件hibernate.xml:

5、增加事务管理配置,有两种方式,一种是使用SpringBoot的config注入方式,另外一种是加在hibernate.xml中。(记住下面5.1和5.2是二选一)

5.1、使用SpringBoot的confiug注入方式:增加配置文件TransactionAdviceConfig.java:

5.2、加在hibernate.xml中:

 

6、增加事务管理过滤器FilterConfig.java,自动开启事务管理:

7、搞掂,启动项目!在需要使用SessionFactory的地方使用如下方式注入即可:

 

常见问题

重复的依赖错误

错误提示如下:

这很有可能你的依赖中有重复的内容,如:

这个是需要注释掉的,不然会报错。

close