return new UsernamePasswordAuthenticationToken(userName, token, authorities);
}
return null;
}
return null;
}
}
======================================================================
(1)在service_acl模块创建,因为其他模板不会用到
- UserDetailsServiceImpl
创建查询登录和用户权限的类,写的位置随意,要求实现UserDetailsService
下面的对象为具体项目中的用户账户密码的那个实体类对象,用于下面的整合,查找数据库的内容
package com.achang.aclservice.service.impl;
import com.achang.aclservice.entity.User;
import com.achang.aclservice.service.PermissionService;
import com.achang.aclservice.service.UserService;
import com.achang.serurity.entity.SecurityUser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import java.util.List;
/**
-
-
自定义userDetailsService - 认证用户详情
-
@author qy
-
@since 2019-11-08
*/
@Service(“userDetailsService”)
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserService userService;//操作对应user表的数据库service对象
@Autowired
private PermissionService permissionService;
/***
-
根据账号获取用户信息
-
@param username:
-
@return: org.springframework.security.core.userdetails.UserDetails
*/
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 从数据库中取出用户信息
User user = userService.selectByUsername(username);
// 判断用户是否存在
if (null == user){
//throw new UsernameNotFoundException(“用户名不存在!”);
}
// 返回UserDetails实现类
com.achang.serurity.entity.User curUser = new com.achang.serurity.entity.User();
BeanUtils.copyProperties(user,curUser);
List authorities = permissionService.selectPermissionValueByUserId(user.getId());
SecurityUser securityUser = new SecurityUser(curUser);
securityUser.setPermissionValueList(authorities);
return securityUser;
}
}
1、在前端项目中下载依赖
npm install --save vuex-persistedstate
2、在node_modules文件夹中替换element-ui依赖
这里替换之前的element-ui的组件,老师后面赶工太严重了,全都是替换
删除掉项目里的element-ui,然后将新的复制进来
3、替换相关文件
这里阿昌直接就看了,没对着做了,直接全部替换代码,太过分了
===================================================================
1、Spring Cloud Config
Spring Cloud Config 为分布式系统的外部配置提供了服务端和客户端的支持方案。在配置的服务端您可以在所有环境中为应用程序管理外部属性的中心位置。客户端和服务端概念上的Spring Environment和 PropertySource 抽象保持同步, 它们非常适合Spring应用程序,但是可以与任何语言中运行的应用程序一起使用。当应用程序在部署管道中从一个开发到测试直至进入生产时,您可以管理这些环境之间的配置,并确保应用程序在迁移时具有它们需要运行的所有内容。服务器存储后端的默认实现使用git,因此它很容易支持标记版本的配置环境,并且能够被管理内容的各种工具访问。很容易添加替代的实现,并用Spring配置将它们插入。
Spring Cloud Config 包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。Springcloud使用git或svn存放配置文件,默认情况下使用git。
2、Nacos替换Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, SpringCloud Config。通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
(1)应用场景
在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。如果微服务架构中没有使用统一配置中心时,所存在的问题:
-
配置文件分散在各个项目里,不方便维护
-
配置内容安全与权限
-
更新配置后,项目需要重启
nacos配置中心:
系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。
1、在Nacos创建统一配置文件
(1)点击创建按钮
(2)输入配置信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kjMYXomG-1615449307176)(http://qpgf4uqra.hn-bkt.clouddn.com/20210311113559.png)]
Data ID 的完整规则格式如下:
p r e f i x − {prefix}- prefix−{spring.profiles.active}.${file-extension}
2、以service-statistics模块为例
(1)在 service中引入依赖
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-config
(2)创建bootstrap.properties配置文件
#配置中心地址
spring.cloud.nacos.config.server-addr=localhost:8848
#spring.profiles.active=dev
该配置影响统一配置中心中的dataId
spring.application.name=service-statistics
3)把项目之前的application.properties内容注释,启动项目查看效果
3、补充:springboot配置文件加载顺序
其实 yml 和 properties 文件是一样的原理,且一个项目上要么 yml 或者 properties ,二选一的存在。推荐使用 yml ,更简洁。
bootstrap 与 application
(1)加载顺序
这里主要是说明 application 和 bootstrap 的加载顺序。
-
bootstrap.yml ( bootstrap.properties )先加载
-
application.yml ( application.properties )后加载
-
bootstrap.yml 用于应用程序上下文的引导阶段。
-
bootstrap.yml 由父 Spring ApplicationContext 加载。
-
父 ApplicationContext 被加载到使用 application.yml 的之前。
(2)配置区别
bootstrap.yml 和 application.yml 都可以用来配置参数。
bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
application.yml 可以用来定义应用级别的。
用yml需要在bootstrap中加入file-extension: yml
在实际开发中,通常有多套不同的环境(默认只有public),那么这个时候可以根据指定的环境来创建不同的 namespce,
例如,开发、测试和生产三个不同的环境,那么使用一套 nacos 集群可以分别建以下三个不同的 namespace。以此来实现多环境的隔离。
1、创建命名空间
默认只有public ,新建了 dev 、 test 和 prod 命名空间
2、克隆配置
(1)切换到配置列表:
可以发现有四个名称空间:public(默认)以及我们自己添加的3个名称空间(prod、dev、test),可以点击查看每个名称空间下的配置文件,当然现在只有public下有一个配置。默认情况下,项目会到public下找 服务名.properties文件。
接下来,在dev名称空间中也添加一个nacos-provider.properties配置。
这时有两种方式:
-
第一, 切换到dev名称空间,添加一个新的配置文件。缺点:每个环境都要重复配置类似的项目
-
第二, 直接通过clone方式添加配置,并修改即可。推荐
点击编辑:修改配置内容,端口号改为8013以作区分
在项目模块中,修改bootstrap.properties添加如下配置:
指定一下名称空间是什么
spring.cloud.nacos.config.namespace=925a4338-5327-4967-8720-65412f8fc0df
namespace的值为:
重启服务提供方服务,测试修改之后是否生效
在一些情况下需要加载多个配置文件。假如现在dev名称空间下有三个配置文件:
service-statistics.properties、redis.properties、jdbc.properties
添加配置,加载多个配置文件
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.profiles.active=dev
该配置影响统一配置中心中的dataId,之前已经配置过
spring.application.name=service-statistics
spring.cloud.nacos.config.namespace=13b5c197-de5b-47e7-9903-ec0538c9db01
spring.cloud.nacos.config.ext-config[0].data-id=port.properties
开启动态刷新配置,否则配置文件修改,工程无法感知
spring.cloud.nacos.config.ext-config[0].refresh=true
======================================================================
1、准备 Git 仓库
码云:https://gitee.com
1.1. 通过网站右上角的「+」号,选择「新建仓库」,进入新建仓库页面
1.2. 新建仓库
1.3. 打开项目并点击菜单栏上的【CVS】–》【Import into versioncontrol】–》【Create Git Repository】
创建本地Git仓库
1.4. 在打开的【Create Git Repository】对话框内选择本地仓库的位置,这里我选择项目的根目录。
1.5. 右击项目点击【Git】–》【Add】,接着点击【Git】–》【Commit Directory】在打开的窗口中选择要上传到本地仓库的代码并添加注释后提交到本地仓库内。
将代码添加到本地Git库中
1.6. 右击项目点击【Git】–》【Repository】–》【Remotes…】。在打开的【Git Remotes】窗口中添加码云的远程仓库。码云的远程仓库地址可以在码云仓库内找到。
设置远程Git库地址
1.8. 上传代码到码云,右击项目点击【Git】–》【Repository】–》【Push…】在打开的【Pushcommits】内可以看到已提交到本地仓库的提交信息。点击【Push】按钮将本地仓库的代码上传到码云上,上传成功后就可以在码云上看到啦。
==============================================================
代码中需要包含以下几部分内容:
(1)代码中需要包含Dockerfile文件
文件内容:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY ./target/demojenkins.jar demojenkins.jar【以后只需要修改这里的目录 和对象即可】
ENTRYPOINT [“java”,“-jar”,“/demojenkins.jar”, “&”]
(2)在项目pom文件中指定打包类型,包含build部分内容
- 第一步:上传或下载安装包
cd/usr/local
jdk-8u121-linux-x64.tar.gz
- 第二步:解压安装包
tar -zxvf jdk-8u121-linux-x64.tar.gz
- 第三步:建立软连接
ln -s /usr/local/jdk1.8.0_121/ /usr/local/jdk
- 第四步:修改环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.: C L A S S P A T H : CLASSPATH: CLASSPATH:JAVA_HOME/lib:$JRE_HOME/lib
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin:$JRE_HOME/bin
通过命令source /etc/profile让profile文件立即生效
source /etc/profile
- 第五步、测试是否安装成功
②、使用java -version,出现版本
- 第一步:上传或下载安装包
cd/usr/local
apache-maven-3.6.1-bin.tar.gz
- 第二步:解压安装包
tar -zxvf apache-maven-3.6.1-bin.tar.gz
- 第三步:建立软连接
ln -s /usr/local/apache-maven-3.6.1/ /usr/local/maven
- 第四步:修改环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/maven
export PATH= P A T H : PATH: PATH:MAVEN_HOME/bin
通过命令source /etc/profile让profile文件立即生效
source /etc/profile
- 第五步、测试是否安装成功
mvn –v
yum -y install git
- 参考文档:
https://help.aliyun.com/document_detail/60742.html?spm=a2c4g.11174283.6.548.24c14541ssYFIZ
- 第一步:安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
- 第二步:添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 第三步:更新并安装Docker-CE
yum makecache fast
yum -y install docker-ce
- 第四步:开启Docker服务
service docker start
- 第五步、测试是否安装成功
docker -v
- 第一步:上传或下载安装包
cd/usr/local/jenkins
jenkins.war
- 第二步:启动
nohup java -jar /usr/local/jenkins/jenkins.war >/usr/local/jenkins/jenkins.out &
- 第二步:访问
http://ip:8080
7.1访问jenkins
http://ip:8080
7.2解锁jenkins
获取管理员密码
这里就可以关闭浏览器,然后配置下面的镜像
注意:配置国内的镜像
官方下载插件慢 更新下载地址
cd {你的Jenkins工作目录,一般是/root/.jenkins}/updates #进入更新配置位置
sed -i ‘s/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g’
default.json && sed -i ‘s/http://www.google.com/https://www.baidu.com/g’ default.json
这是直接修改的配置文件,如果前边Jenkins用sudo启动的话,那么这里的两个sed前均需要加上sudo重启Jenkins,安装插件
再次重启jenkins,然后在访问地址
7.3选择“继续”
7.4选择“安装推荐插件”
7.5插件安装完成,创建管理员用户
7.6保存并完成
7.7 进入完成页面
8.1.1配置jdk
JAVA_HOME:/usr/local/jdk
8.1.2配置maven
MAVEN_HOME:/usr/local/maven
8.1.2配置git
查看git安装路径:which git
9.1点击创建一个新任务,进入创建项目类型选择页面
填好信息点击“确认”
9.2配置“General”
9.3配置“源码管理”
配置git远程仓库地址,与git远程仓库的账户密码
9.4构建作业
到源码中找到docker脚本
选择“执行shell”,通过脚本的方式构建
保存上面的构建作业
9.5构建
构建作业之后,就可以执行构建过程了。
9.5.1执行构建过程
9.5.2构建结构
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
9.5构建
构建作业之后,就可以执行构建过程了。
9.5.1执行构建过程
9.5.2构建结构
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-9Qn04oaw-1712717056887)]
[外链图片转存中…(img-xTNpBNZw-1712717056888)]
[外链图片转存中…(img-3EOzvcgl-1712717056888)]
[外链图片转存中…(img-Z5tSyCFl-1712717056888)]
[外链图片转存中…(img-9pRdKlJS-1712717056889)]
[外链图片转存中…(img-R7pTNqpo-1712717056889)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-OZC9FqnD-1712717056889)]
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
[外链图片转存中…(img-nXnPVill-1712717056890)]
[外链图片转存中…(img-Va0tFchO-1712717056890)]
更多笔记分享
[外链图片转存中…(img-wUqJbiqg-1712717056890)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-6hjYRVg1-1712717056891)]