1、创建工程,maven然后选quicstart。项目名common-xxxx(公共模块)。Projectlocation中写文件夹地址,Module name写项目名。
2、建立数据库连接,写sql脚本。在common-xxxx中的src,java。。。下创建vo文件,在里面写实体类,写序列化 implements serializable,写tostring方法。
3、点右边侧边栏Maven Projects,点common-xxxx 中的install运行它(打公共组件)。
4、 从springInitializr 中创建eureka-server 选Web里的 spring web和spring Cloud Discovery 里的Eureka Server.
5、在eureka-server中的resources中的application中写配置文件:
server.port=8761
Spring.appliaction.name=eureka-server
Eureka.client.register-with-eureka=false
Eureka.client.fetch-registry=false
Eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
6、在eureka-server中java的src的EurekaServerApplication中上部注解@EnableEurekaServer(开启服务的意思)
7、运行EurekaServerApplication,看是否有错误
8、用maven springInitializr创建新项目,命名用eureka-provider-one (提供者)开头,下一步。选web spring web,SQL MySQL Driver、JDBC API、MyBatis Framework,spring cloud Discovery Eureka Discovery Client。
9、在 provider-0ne 的pom里加一个架包,输入关键字common就行。加分页架包(需要分页的情况下)
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
改musql库改为
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
10、在provider-one项目下建立service文件夹,建立实体类的service接口,查询所有用List<Map<String,Object>> 方法名(实体类 实体类别名)多对一括号里才有参数。
根据Id查详情,写作 Map<String,Object> infoData(Student student);
如果有分页,写作PageInfo<Map<String,Object>> showPage(Integer pageNo,实体类名 实体类重命名);
11、在ptovider-one 的java中创建mapper文件夹,写mapper接口,在接口内的接口方法上方写相应注解和sql语句查询条件。List集合上不能写sql语句。
curdate() 函数:返回当前的日期。用于add的sql语句获取日期。
如果有分页,写作PageInfo<Map<String,Object>> showPage(Integer pageNo,实体类名 实体类重命名);。
**********在service文件夹中写service接口的实现类。配注解@Service,@Transactional(上部)。里面加注解@Autowired 分别私有化XXXmapper接口,并重命名。返回 重命名.方法名();有参就带参。查单条info,写:
public Map<String, Object> infoData(Student student) {
Map<String ,Object> map = new HashMap<>();
map.put("stu",studentMapper.showData(student).get(0));
return studentMapper.showData(student).get(0);
}
实现类一对多。上部注解@Service 下部注解@Autowired 。
如果有分页,写作:
PageHelper.startPage(pageNo,4); // 数字是一页显示的条数
List<Map<String ,Object>> list=invitationMapper.optionData(inv); //与集合相同接口名,同方法名参数
rerurn new PageInfo<Map<String, Object>>(list);
12、在provider-one项目中的resources文件夹下创建文件夹mapper,建立文件XXXmapper.xml 。namespace写mapper文件夹中的多对一的接口类路径。 select id 写接口方法名,showdata,parameterType写实体类名,resyltType写map,然后写查询方法。列名 like concat(’%’,#{列名},’%’)模糊查询所用。order by 。。。。desc 降序排列。
13、在provider-one项目的Java文件夹中创建controller文件夹创建CenterController类,里面写service实现类,内容为serviceImpl里的所有接口实现。不需要写implements和接口名。先上部写注解@RestController,内部写注解@Autowired 私有化service接口 重命名。 所有接口方法公共化,上部加注解@RequestMapping(“/方法名。do”), 返回值为 重命名.方法名()。有参带参。info方法写法:
public Map<String, Object> infoData(Student student) {
return studentFeign.infoData(student);
}
,与查询全部的方法,只是方法名不同。分页的返回值 私有化的接口重命名 .对应方法名(pageNo,类别名)。
14、在provider-one项目的java文件夹中的EurekaProviderApplication上部写注解@MapperScan(“cn.kgc.mapper”)
@EnableEurekaClient
14、在provider-one项目的resources文件夹中的application写配置:
server.port=8762
spring.application.name=provider
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名
spring.datasource.username=root
spring.datasource.password=123
mybatis.type-aliases-package=cn.kgc.vo
mybatis.mapper-locations=classpath:mapper/*.xml
15、用maven springInitializr创建新项目,命名用eureka-provider-two 开头,下一步。选web spring web,SQL MySQL Driver、JDBC API、MyBatis Framework,spring cloud Discovery Eureka Discovery Client。
16、在provider-two 项目中的resources文件夹中的application文件与provider-one相同,只需要改端口号为8763。
17、provider-two 项目中java文件夹下结构与内容与provider-one一致,直接贴provider-one的就行。Resources文件夹下的mapper文件与provider-one内容一致。provider-two 下pom.xml文件内容与provider-one一致。
18、maven springInitializer 建立项目eureka-consumer(调用者)。Web spring web,Spring Cloud Discovery Eureka Discovery Client,Spring Colud Routing Openfeign。
19、建立feign文件夹写,写接口类xxxxFeign,内容为one项目下CenterController类相同,其中,删掉上部注解@RestController。加注解@FeignClient(name=“provider”)(提供者的名字),删掉私有化内容,将 public后的类型改为String,删掉方法后的返回值内容,也就是花括号的全部。在pom.xml文件中加common架包。Common-类名(多对一的类)
分页写作public String showPage(@RequestParam(“pageNo”) Integer pageNo, @RequestBody Members members) ; 要加@RequestParam,@RequestBody这两个注解
20、在eureka-consumer项目下的java文件夹中的feign文件夹下建立xxxx(实体类名)FeignFallBack类在xxxxFeign类中的注解@FeignClient(name=“provider”,fallback=实体类类名FeignFallBack.class)。xxxxFeignFallBack类实现xxxFeign的接口。上部加注解@Component。 下部不能写 @Autowired,不能写私有化接口名
返回值按照方法不同为各种 操作不成功的失败的提示。
21、在eureka-consumer项目下java文件夹下建立Controller文件夹,写CenterController类。上部加注解@RestController ,内部加注解@Autowired,私有化 xxxxFeign接口 重命名。内容与one项目下CenterController类相同,只是将 public后的类型改为String,返回值 改为 xxxFeign.方法名()有参的就带参。
修改EurekaConsumerApplication文件,加上部注解@EnableEurekaClient,@EnableFeignClients。
如果提示: ‘url’ attribute is not specified and no embedded datasource could be configured.
那么就在@SpringBootApplication后加:(exclude = {DataSourceAutoConfiguration.class})
22、在eureka-consumer项目下resources文件夹下的application文件,贴One项目的同名文件。修改端口号为8764 修改application.name=consumer。删掉数据库相关,和其下面部分内容。添加feign.hystrix.enabled=true(开启熔断),
provider.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule.(负载均衡)
22、maven sprigInitializr 建立项目eureka-zuul(网关)。选web spring web,Spring Cloud Discovery Eureka Discovery Client,Spring Cloud Routing Zuul。打开java文件夹打开EurekaZuulApplication,加上部注解@EnableEurekaClient,@EnableZuulProxy。 resources文件夹下application贴consumer项目中的同名文件。修改端口号为8765。application.name=zuul。删掉feign和provider.ribbon。添加
zuul.routes.provider=/pro/**/
zuul.routes.consumer=/con/**/