• Tag 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,查看结果即可。

使用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的地方使用如下方式注入即可:

 

常见问题

重复的依赖错误

错误提示如下:

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

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

在SpringBoot中使用SessionFactory的方法

首先项目中已经使用JPA的方式连接,然后加入hibernate依赖:

 

然后有以下几种方式,选择一种合适自己的。

方法一:

增加配置文件HibernateConfig.java:

如果要使用@Transactional则需要在application.properties中加上:

 

方法二:(推荐)

在SpringBoot的启动类中加上:

如果要使用@Transactional则需要在application.properties中加上:

 

 

方法三:

在SpringBoot的启动类中加上:

如果要使用@Transactional则需要在application.properties中加上:

 

 

使用方法:

 

close