开发环境:idea;mysql5.7及以上
技术方面:springMVC,springBoot,mybatis(sql), (hibernate HQL)
SpringCloud不是一个落地的技术,主要给我们提供的是各种解决方案(模块)
SpringBoot是正在落地后使用的技术(框架)
名称解释:
落地:项目中的具体模块功能搭建 添加 删除 修改 查询 各种检索功能分配等
服务中心(注册):
Eureka,zookeeper(几乎淘汰),consul(几乎淘汰),nacos
服务调用:ribbon,loadbalancer(几乎淘汰),fegin,openFegin
服务降级:Hystrix,resilience4j(几乎淘汰),sentinel
服务网关:zuul,gateway
服务配置:config 服务总线:bus,nacos
*.hprof;*.idea;*.iml;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn;vssver.scc;vssver2.scc;SpringCloud理解 创建项目 pom.xml配置
4.0.0 org.example SpringCloudLearn pom 1.0-SNAPSHOT cloud_demo8001 UTF-8 1.8 1.8 4.12 1.2.17 1.2.17 5.1.47 1.1.16 1.3.8 org.springframework.boot spring-boot-dependencies 2.2.2.RELEASE pom import org.springframework.cloud spring-cloud-dependencies Hoxton.SR1 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2.2.0.RELEASE pom import mysql mysql-connector-java ${mysql.version} com.alibaba druid-spring-boot-starter ${druid.verison} org.mybatis.spring.boot mybatis-spring-boot-starter ${mybatis.spring.boot.verison} org.projectlombok lombok ${lombok.version} junit junit ${junit.version} log4j log4j ${log4j.version} org.springframework.boot spring-boot-maven-plugin 2.2.1.RELEASE true true
注:工程中的pom.xml并没有真正下载包,只是对包进行规范
搭建项目
pom.xml:
在resources文件夹下创建File类型SpringCloudLearn org.example 1.0-SNAPSHOT 4.0.0 cloud_demo8001 org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.0 com.alibaba druid-spring-boot-starter 1.1.17 mysql mysql-connector-java org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok 1.16.18 true org.springframework.boot spring-boot-starter-test
server:
port: 8001
spring:
application:
name: cloud-payment-service #服务名称
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloud?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: root
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.yangluyao.springcloud.entities #所有entity别名所在包
补充,使用SpringCloud统一管理版本
项目的pom.xml:
4.0.0 org.example SpringCloudLearn pom 1.0-SNAPSHOT cloud_demo8001 cloud_demo8001 UTF-8 1.8 1.8 4.12 1.2.17 1.16.18 5.1.47 1.1.17 1.3.8 org.springframework.boot spring-boot-dependencies 2.2.2.RELEASE pom import org.springframework.cloud spring-cloud-dependencies Hoxton.SR1 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2.2.0.RELEASE pom import mysql mysql-connector-java ${mysql.version} com.alibaba druid-spring-boot-starter ${druid.verison} org.mybatis.spring.boot mybatis-spring-boot-starter ${mybatis.spring.boot.verison} org.projectlombok lombok ${lombok.version} junit junit ${junit.version} log4j log4j ${log4j.version} org.springframework.boot spring-boot-maven-plugin 2.2.1.RELEASE true true
主要在properties中管理版本,下面都是引用,子项目中就可以不写版本号,更改版本时可以统一更改,维护性更强
模块书写顺序 1.创建application.xml文件注意:若不是叶子图标,先看看eureka是否注入,再看FileTypes中的Text里面是否包含application.xml,若有则移除
server:
port: 8001
spring:
application:
name: cloud-payment-service #服务名称
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1
datasource:
type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloud?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: root
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.yangluyao.springcloud.entities #所有entity别名所在包
2.搭建项目包
在java下创建包,mvc模式
有了lombok创建实体极其方便
package com.clouddemo.entities;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data //省略getter and setter代码
@AllArgsConstructor //省略有参构造代码
@NoArgsConstructor //省略无参构造代码
public class TabUsers {
private String id;
private String loginname;
private String password;
private String username;
}
4.创建dao,以及对应的mapper.xml
dao里面注意要有@Mapper注解
dao:
package com.clouddemo.dao;
import com.clouddemo.entities.TabUsers;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface TabUserDao {
public List findall();
}
mapper.xml:
注意mapper.xml通过namespace来找到对应dao,点“.”的时候Idea会自动查询,找到直接回车即可
5.创建service和Impl注意实现里要加@Service注解
service:
package com.clouddemo.service;
import com.clouddemo.entities.TabUsers;
import java.util.List;
public interface TabUsersService {
public List findall();
}
serviceImpl:
package com.clouddemo.service.Impl;
import com.clouddemo.dao.TabUserDao;
import com.clouddemo.entities.TabUsers;
import com.clouddemo.service.TabUsersService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class TabUsersServiceImpl implements TabUsersService {
@Resource
private TabUserDao dao;
@Override
public List findall() {
List l=dao.findall();
return l;
}
}
注意这里不用@Autowired注解,而是采用源的方式(官方网站规定)
6.创建Controllerpackage com.clouddemo.controller;
import com.clouddemo.entities.TabUsers;
import com.clouddemo.service.TabUsersService;
import javafx.scene.control.Tab;
import lombok.extern.slf4j.Slf4j;
import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController //Controller注解
@Slf4j //log4j日志注解
public class TabUsersController {
@Resource
private TabUsersService service;
@GetMapping(value = "tab_users_findall")
public String tab_users_findall() {
JSONArray jsonArray=new JSONArray();
List list=service.findall();
for (TabUsers t:list) {
JSONObject jo=new JSONObject();
String id=t.getId();
String loginname=t.getLoginname();
String password=t.getPassword();
String username=t.getUsername();
jo.put("id",id);
jo.put("username",username);
jo.put("loginname",loginname);
jo.put("password",password);
jsonArray.add(jo);
}
return jsonArray.toJSONString();
}
}
注意:对数据库进行增删改的时候使用@PostMapping
7.创建启动类package com.clouddemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application8001 {
public static void main(String arges[]){
SpringApplication.run(Application8001.class,arges);
}
}
注意要放在包下
8.测试


