1.git
1.1 创建git仓库,添加ignore maven的格式
1.2 idea导入git初始化代码
1.3配置gitignore
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
.idea
**/.gitignore
2.后台系统
2.1 人人开源的项目:https://gitee.com/renrenio/renren-fast
2.3.逆向生成工具: https://gitee.com/renrenio/renren-generator
2.3.1修改配置
mainPath=com.atguigu
#包名
package=com.atguigu.gulimall
moduleName=product
#作者
author=chenshun
#Email
email=sunlightcs@gmail.com
#表前缀(类名不会包含表前缀)
tablePrefix=pms_
2.3.2启动程序访问:http://localhost/#generator.html
2.3.3将生成的包放入到项目中,以及添加相关包的依赖
2.3.4整合mybatis
spring:
datasource:
username: root
password: root
url: jdbc:mysql://192.168.35.110:3306/gulimall_pms
driver-class-name: com.mysql.jdbc.Driver
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
@SpringBootApplication
@MapperScan("com.atguigu.gulimall.product.dao")
public class GulimallProductApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallProductApplication.class, args);
}
}
3.分布式
3.1nacos
配置,jar依赖
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-coupon
公共组件包下
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
下载nacos server启动
3.2启用feign
3.2.1 引入openfeign
A模块想调用B模块,A模块安装
3.2.2 编写接口
A模块创建一个openfeign的包里面编写接口 ,对应B模块的一个controller层的方法
//B模块中有对应的完整的方法
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("coupon/coupon/member/list")
public R membercoupons();
}
3.2.3 A模块启动类开启 :
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
3.3nacos配置中心
Ⅰ基础概念
1引入依赖
2创建 bootstrap.properties
spring.application.name=gulimall-coupon //服务的名字
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 //nacos服务
3需要给配置中心添加一个数据集
{Data Id} gulimall-coupon.properties规则:应用名.properties
4给应用名.properties添加任何配置
5动态配置
@RegfreshScope动态配置,刷新数据
@Value ("${配置项的名}");获取到配置
Ⅱ 细节
1.命名空间:配置隔离 默认public
1.1环境隔离
1开发环境,2.测试环境,3.生产环境
切换命名空间 :做环境隔离
是prop的id
spring.cloud.nacos.config.namespace=c3fb0d67-6766-4697-ad3c-fbb1437cd73e
1.2.基于每一个微服务之间的相互隔离,每一个微服务创建自己的命名空间,只加载自己命名空间下的所有配置
2.配置集:所有的配置的集合
3. 配置集ID:类似文件名
4.配置分组:
默认default_group
spring.cloud.nacos.config.namespace=c3fb0d67-6766-4697-ad3c-fbb1437cd73e
spring.cloud.nacos.config.group=1111
Ⅲ同时加载多个配置集
将datasource,mybatice和其他配置进行分组配置
在bootstrap.properties将dataID,相关yml进行配置 (可以替换编写的yml文件)
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=9e43a294-e8a1-493a-80a8-37be1a2d7a1c
#spring.cloud.nacos.config.group=1111
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].data-id=other.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true
3.3API网关 Gatway
1.前端所有的请求先到达damin_route
// api接口请求地址
window.SITE_CONFIG['baseUrl'] = 'http://localhost:88//api';
2.配置网关
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
- id: admin_route
uri: lb://renren-fast //lb 负载均衡
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
# ## 前端项目,/api
### http://localhost:88/api/captcha.jpg http://localhost:8080/renren-fast/captcha.jpg
### http://localhost:88/api/product/category/list/tree http://localhost:10000/product/category/list/tree
3.配置跨域:端口号以及前面的路径有一点不一样都不行
4.解决方案:
①使用nginx部署同一个域
②配置当次请求允许跨域只能有一个跨域配配置,网关中配置了,就不要在其他服务中再配置
@Configuration
public class GulimallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
//1、配置跨域
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedOrigin("*");
//允许携带cookis
corsConfiguration.setAllowCredentials(true);
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
1.前端:
1.1安装node.js
将仓库地址改为淘宝:npm config set registry http://registry.npm.taobao.org/
2.1ES6 javaScript语法规范
shift +! :html 快捷键