maven是怎么来的
看到示例代码先要编写配置class,比如资源服务器:
@Configuration
@EnableResourceServer
public class MyResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(ResourceServerSecurityConfigurer resources) {
resources.resourceId("goods").stateless(true);
}
@Override
public void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
// Since we want the protected resources to be accessible in the UI as well we need
// session creation to be allowed (it's disabled by default in 2.0.6)
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
.and()
.requestMatchers().anyRequest()
.and()
.anonymous()
.and()
.authorizeRequests()
//配置order访问控制,必须认证过后才可以访问
.antMatchers("/orders/**").authenticated();
// @formatter:on
}
}
当然认证服务器的配置也要继承这个所谓的ResourceServerConfigurerAdapter,关于这个Adapter是什么东东暂且不管,反正要用的,所以先要通过import把它引用进来,引用如下:
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
尝试在现有系统中新建一个HelloWorldResourceServerConfiguration类,在其中引用ResourceServerConfigurerAdapter,这样才能让我们的helloworldconfig新建类继承这个类啊,改写程序如下:
package com.example.demo;
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
public class HelloWorldResourceServerConfiguration extends ResourceServerConfigurerAdapter {
}
然后系统提示没有security这个命名空间,security这个单词智能提示为红色,说明没有引用进来,用以前熟悉的语言理解,以上错误类似于C#中的缺少dll动态链接库引用,C++的缺少lib引用,JavaScript中某些插件没有通过npm安装到本地nodemodules。
看看我们的现有后端程序,再结合网络教程,发现在目前流行后端技术中,普遍使用SpringBoot搭建后端微服务(哎,想起了10年前还用asp.net编写后端,编写webservice那个时代,一去不复返),使用maven这个东西统一管理项目依赖,关于maven基本概念一大推看起来费劲,最后通过实践总结,就是类似Vue中Package.json的东西。
IDEA中使用maven
查看是否已经安装了maven
IDEA中使用maven,可以先从官网下载maven然后自己配置,但是我们一般idea都自带的,不要以为在cmd中输入mvn提示没有该命令就是本机没有,有可能只是没有添加环境变量。
查看IDEA是否已经安装了maven方法:IDEA中点击file-setting,定位到maven查看配置:
如图,可以看出已经存在了maven,自己打开maven home directory中标识的文件夹,可以看到maven文件夹的组织结构如下所示:
如果你的cmd中输入mvn提示没有该命令,只需要在环境变量中配置该地址中的bin目录即可,这个目录下有一个mvn.cmd,目测应该是调用的这个命令,有可能是其他的,反正是哪个在本文中不重要。
当然要是你idea中本来就没有maven,那就要自己安装了,下载地址http://maven.apache.org/download.cgi
然后再在IDEA中的setting中配置这个地址,然后要是你需要在命令行中使用它的话,那就在环境变量中配置其中的bin目录即可。
maven配置
有了maven目录以后呢,一般我们还需要配置两个maven项:
- 本地仓库地址;
- 镜像地址。
什么意思,通俗一点讲,就是现在后端技术发展了,各种插件api库jar包多了,我们在实际项目中可以使用直接利用人家写好的库了,所以,我们用maven这个东西可以把需要的库直接下载下来,放到我们的本机一个文件夹里面,然后我们用的时候可以从本机引用,这样不就既可以使用互联网的丰富资源,又可以享受本机读取的快速体验了吗,两全其美嘛,说到这,我又忍不住要感谢思科的两位创始人,为了写情书方便而创办了思科,有了互联网路由器交换机,这样才能让我们这些开发人员减少工作量啊。
- 本地仓库地址就是上面提到的本机文件夹,这里面要存储所有项目需要用到的引用库,所以最好选择一个大盘,不要放在C盘,影响系统运行嘛;
- 另一个概念:镜像地址的存在目的是提高下载速度,如果不设置镜像地址,那么maven会从默认中央仓库下载:http://repo1.maven.org/maven2/,我们设置它为阿里的一个地址就可以使下载更快
比如这里我把本地仓库地址设为E盘一个文件夹(我自己建好的文件夹,专门存放maven下载插件库),修改maven目录下的conf文件夹中的settings.xml:
设置完本地仓库地址后到idea的setting中将对应的仓库地址也改成那个地址:
然后按照网上的方法修改镜像地址,也是修改maven目录下的conf文件夹中的settings.xml :
这样maven配置部分就完成了。
在pom.xml中设置需要的依赖
现在我们就需要在pom.xml中配置所需要的依赖,其作用对应vue的package.json,pom是英文单词Project Object Model的缩写,直译:项目对象模型,其中存放了maven构建的配置,该文件存在我们刚建立的项目文件夹的根目录下,上一篇文章新建springboot web项目时默认添加了两个依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>
<version>2.3.5.RELEASE</version>
</dependency>
注意,其中第二个org.springframework.security.oauth一定要添加version标签注明版本号,不然没用,我自己就在这上面卡很久,一个小坑吧。
添加完成后系统会自动下载对应库到我们配置的本地仓库里面,如果没有自动下载,在setting中设置成自动下载即可:
然后现在我们就可以使用那个引用:
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
继承也不报错了。
好了,今天到这里吧,后面再来看看这个类是做什么的,其基类又是什么,为什么要继承这个基类。