前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行commonservice-sso服务搭建,本节我们只是搭建commonservice-sso的基础平台,闲话少说,直接将步骤记录下来:
1. 创建maven项目commonservice-sso,其中pom.xml文件配置如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.ml.honghu</groupId> <artifactId>commonservice</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>commonservice-sso</artifactId> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.springframework.hateoas</groupId> <artifactId>spring-hateoas</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>com.ml.honghu.common.framework</groupId> <artifactId>common-framework-dao</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>com.ml.honghu</groupId> <artifactId>component-base</artifactId> </dependency> </dependency> </dependencies> <!-- 打包插件,其中repackage、true是专门打spring boot专用包 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <id>1</id> <goals> <goal>repackage</goal> </goals> </execution> <execution> <id>2</id> <goals> <goal>build-info</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
2. 配置bootstrap.yml文件
spring: application: name: commonservice-sso profiles: active: dev,discoveryClient cloud: config: discovery: enabled: true service-id: commonservice-config-server eureka: client: service-url: defaultZone: http://honghu:123456@localhost:8761/eureka instance: prefer-ip-address: true
3. 配置项目启动文件
package com.ml.honghu; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class SSOApplication { public static void main(String[] args) { SpringApplication.run(SSOApplication.class, args); } }
4. 创建sso相关表:
oauth_access_token、oauth_approvals、
oauth_client_details、oauth_client_token、
oauth_code、oauth_refresh_token
脚本如下:
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50621 Source Host : localhost:3306 Source Database : honghu Target Server Type : MYSQL Target Server Version : 50621 File Encoding : 65001 Date: 2017-10-26 20:12:56 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `oauth_access_token` -- ---------------------------- DROP TABLE IF EXISTS `oauth_access_token`; CREATE TABLE `oauth_access_token` ( `token_id` varchar(256) DEFAULT NULL, `token` blob, `authentication_id` varchar(128) NOT NULL, `user_name` varchar(256) DEFAULT NULL, `client_id` varchar(256) DEFAULT NULL, `authentication` blob, `refresh_token` varchar(256) DEFAULT NULL, PRIMARY KEY (`authentication_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for `oauth_approvals` -- ---------------------------- DROP TABLE IF EXISTS `oauth_approvals`; CREATE TABLE `oauth_approvals` ( `userId` varchar(256) DEFAULT NULL, `clientId` varchar(256) DEFAULT NULL, `scope` varchar(256) DEFAULT NULL, `status` varchar(10) DEFAULT NULL, `expiresAt` datetime DEFAULT NULL, `lastModifiedAt` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of oauth_approvals -- ---------------------------- -- ---------------------------- -- Table structure for `oauth_client_details` -- ---------------------------- DROP TABLE IF EXISTS `oauth_client_details`; CREATE TABLE `oauth_client_details` ( `client_id` varchar(128) NOT NULL, `resource_ids` varchar(256) DEFAULT NULL, `client_secret` varchar(256) DEFAULT NULL, `scope` varchar(256) DEFAULT NULL, `authorized_grant_types` varchar(256) DEFAULT NULL, `web_server_redirect_uri` varchar(256) DEFAULT NULL, `authorities` varchar(256) DEFAULT NULL, `access_token_validity` int(11) DEFAULT NULL, `refresh_token_validity` int(11) DEFAULT NULL, `additional_information` varchar(4096) DEFAULT NULL, `autoapprove` varchar(256) DEFAULT NULL, PRIMARY KEY (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Table structure for `oauth_client_token` -- ---------------------------- DROP TABLE IF EXISTS `oauth_client_token`; CREATE TABLE `oauth_client_token` ( `token_id` varchar(256) DEFAULT NULL, `token` blob, `authentication_id` varchar(128) NOT NULL, `user_name` varchar(256) DEFAULT NULL, `client_id` varchar(256) DEFAULT NULL, PRIMARY KEY (`authentication_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of oauth_client_token -- ---------------------------- -- ---------------------------- -- Table structure for `oauth_code` -- ---------------------------- DROP TABLE IF EXISTS `oauth_code`; CREATE TABLE `oauth_code` ( `code` varchar(256) DEFAULT NULL, `authentication` blob ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of oauth_code -- ---------------------------- -- ---------------------------- -- Table structure for `oauth_refresh_token` -- ---------------------------- DROP TABLE IF EXISTS `oauth_refresh_token`; CREATE TABLE `oauth_refresh_token` ( `token_id` varchar(256) DEFAULT NULL, `token` blob, `authentication` blob ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
备注: oauth的相关表是用来存储用户的token信息和认证信息的。
本节搭建先搭建那么多,后面的业务代码太多,我们会在后面的章节中放出来。
从现在开始,我这边会将近期研发的spring cloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。
相关推荐
Commonservice-system 是一个大型分布式、微服务、面向企业的 JavaEE 体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建。 采用服务化的组件开发模式,...
其中,Eureka是Spring Cloud中的服务发现组件,它能够实现服务注册与发现的功能,是分布式微服务架构中不可或缺的一部分。 #### 二、创建Eureka服务发现中心 根据给定的文件信息,我们将详细介绍如何创建一个名为`...
其次,我们需要添加 `instance-id` 属性,并将其设置为 `${spring.application.name}:${spring.cloud.client.ip-address}`。这将使 Consul 使用 IP 地址来注册服务。 ```yaml spring: cloud: consul: host: xxx....
- 公共服务(CommonService):提供基础服务支持,需优先编译。 - 网络服务(NetService):处理网络通信,用于登录服务器和游戏服务器,同样需要优先编译。 - 列表服务(ListService)、内核引擎(KernelEngine...
- 实现`IWsService`的`WsServiceImp`类,使用`@Service`注解标记为Spring的bean,表明它是一个可被Spring管理的服务组件。 - 利用`@PostConstruct`注解的方法`init`,在Spring容器启动时自动执行,用于初始化`...
综上所述,“大数据分析系统”是一个基于Java的复杂应用系统,它利用Spring框架和一系列其他开源库实现了高效的数据处理和分析功能。通过丰富的API和接口,该系统可以灵活地集成到现有的IT基础设施中,为企业提供...
在Spring框架中,循环依赖(Circular Dependency)是指两个或多个Bean之间形成的一种相互依赖关系,导致Spring容器在初始化这些Bean时遇到困难。当一个Bean依赖于另一个Bean,而后者又反过来依赖于前者,就会出现...
在上面的配置中,我们定义了一个名为 `commonWS` 的WebService,服务类为 `org.dsp.ea.pay.ws.ICommonWS`,服务地址为 `/CommonService`。同时,我们还指定了 `commonWSImp` bean 作为服务实现类。 这篇文章详细...
最后,定义了两个业务服务bean:`BWService`和`CommonService`。这两个服务均使用了上面定义的事务代理工厂,并关联了具体的实现类。 - `target`: 实际调用的业务逻辑bean,如`BWServiceTarget`和`CommonTarget`。 ...
在这里,我们将`CommonService`添加到`providers`数组中,确保父组件有一个服务实例。同时,在构造函数中,我们获取了服务中的`dateList`并将其赋值给组件的`list`属性,以便在模板中展示数据。 父组件的HTML模板`...
.NET Core 3.0是一个用于构建云原生应用的开源框架,它支持跨平台运行,并集成了许多现代开发实践和模式。在.NET Core 3.0中创建基于Consul的Configuration扩展组件是一项高级任务,旨在通过分布式配置管理系统来...
例如,可以创建一个公共的服务: ```typescript import { Injectable } from '@angular/core'; @Injectable() export class CommonService { private data: string; setData(data: string) { this.data = data...
一、系统架构 该系统主要由三个部分组成:发送端、接收端和蓝牙服务。发送端负责数据的采集和传输,接收端负责数据的接收和处理,蓝牙服务负责蓝牙连接和数据传输。 二、发送端 发送端主要由三个部分组成:...
项目中还包含了一些通用的服务和控制器,比如`CommonService.java`和`GongzuoliangController.java`,这些类通常用于实现业务逻辑,处理来自前端的请求,并调用DAO层操作数据库。`CommonUtil.java`可能是包含了一些...
共同服务Clojure库旨在...好的,这取决于您。测验clj -M:test用法整我执照版权所有:copyright:2020 FIXME 该程序和随附的材料根据Eclipse Public License 2.0的条款提供,该条款可从。 当满足Eclipse Public License...
3. CommonService.java:这是一个通用服务类,通常会包含一些可复用的方法,比如日志记录、事务管理等,旨在提高代码的可维护性和复用性。 4. SysLogService.java:系统日志服务,用于记录用户的操作行为、系统的...
压缩包子文件的名称"CommonService"虽然可能是某个服务或者模块的名称,但是单独这个名称无法提供足够的上下文来生成一篇超过1000字的IT专业知识文章。 在正常的IT场景中,如果标题和描述包含如"数据库管理"、"编程...