SpringCloud学习之旅08--weather项目city-eureka

目录结构:


build.gradle文件:

// buildscript 代码块中脚本优先执行
buildscript {


// ext 用于定义动态属性
ext {
springBootVersion = '2.0.0.M3'
}


// 使用了Maven的中央仓库及Spring自己的仓库(也可以指定其他仓库)
repositories {
// mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}


// 依赖关系
dependencies {


// classpath 声明了在执行其余的脚本时,ClassLoader 可以使用这些依赖项
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}


// 使用插件
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'


// 指定了生成的编译文件的版本,默认是打成了 jar 包
group = 'com.waylau.spring.cloud'
version = '1.0.0'


// 指定编译 .java 文件的 JDK 版本
sourceCompatibility = 1.8


// 使用了Maven的中央仓库及Spring自己的仓库(也可以指定其他仓库)
repositories {
//mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}


ext {
springCloudVersion = 'Finchley.M2'
}


// 依赖关系
dependencies {


// 该依赖用于编译阶段
compile('org.springframework.boot:spring-boot-starter-web')


// Eureka Client
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')


// 该依赖用于测试阶段
testCompile('org.springframework.boot:spring-boot-starter-test')
}


dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}

}



citylist.xml和前边的博文一样,就不介绍了。


application.properties文件:

spring.application.name: msa-weather-city-eureka


eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/


server.port=8081




package com.waylau.spring.cloud.weather.vo;


import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;


/**
 * City.
 * 
 * @since 1.0.0 2017年11月23日
 * @author <a href="https://waylau.com">Way Lau</a> 
 */
@XmlRootElement(name = "d")
@XmlAccessorType(XmlAccessType.FIELD)
public class City {
@XmlAttribute(name = "d1")
private String cityId;

@XmlAttribute(name = "d2")
private String cityName;

@XmlAttribute(name = "d3")
private String cityCode;

@XmlAttribute(name = "d4")
private String province;


public String getCityId() {
return cityId;
}


public void setCityId(String cityId) {
this.cityId = cityId;
}


public String getCityName() {
return cityName;
}


public void setCityName(String cityName) {
this.cityName = cityName;
}


public String getCityCode() {
return cityCode;
}


public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}


public String getProvince() {
return province;
}


public void setProvince(String province) {
this.province = province;
}

}




package com.waylau.spring.cloud.weather.vo;


import java.util.List;


import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;


/**
 * City List.
 * 
 * @since 1.0.0 2017年11月23日
 * @author <a href="https://waylau.com">Way Lau</a> 
 */
@XmlRootElement(name = "c")
@XmlAccessorType(XmlAccessType.FIELD)
public class CityList {
@XmlElement(name = "d")
private List<City> cityList;


public List<City> getCityList() {
return cityList;
}


public void setCityList(List<City> cityList) {
this.cityList = cityList;
}

}



package com.waylau.spring.cloud.weather.util;


import java.io.Reader;
import java.io.StringReader;


import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;


/**
 * Xml Builder.
 * 
 * @since 1.0.0 2017年11月23日
 * @author <a href="https://waylau.com">Way Lau</a> 
 */
public class XmlBuilder {


/**
* 将XML转为指定的POJO
* @param clazz
* @param xmlStr
* @return
* @throws Exception
*/
public static Object xmlStrToOject(Class<?> clazz, String xmlStr) throws Exception {
Object xmlObject = null;
Reader reader = null;
JAXBContext context = JAXBContext.newInstance(clazz);

// XML 转为对象的接口
Unmarshaller unmarshaller = context.createUnmarshaller();

reader = new StringReader(xmlStr);
xmlObject = unmarshaller.unmarshal(reader);

if (null != reader) {
reader.close();
}

return xmlObject;
}

}








package com.waylau.spring.cloud.weather.service;


import java.util.List;


import com.waylau.spring.cloud.weather.vo.City;


/**
 * City Data Service.
 * 
 * @since 1.0.0 2017年11月23日
 * @author <a href="https://waylau.com">Way Lau</a> 
 */
public interface CityDataService {


/**
* 获取City列表
* @return
* @throws Exception
*/
List<City> listCity() throws Exception;

}





package com.waylau.spring.cloud.weather.service;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;


import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;


import com.waylau.spring.cloud.weather.util.XmlBuilder;
import com.waylau.spring.cloud.weather.vo.City;
import com.waylau.spring.cloud.weather.vo.CityList;


/**
 * City Data Service.
 * 
 * @since 1.0.0 2017年11月23日
 * @author <a href="https://waylau.com">Way Lau</a> 
 */
@Service
public class CityDataServiceImpl implements CityDataService {


@Override
public List<City> listCity() throws Exception {
// 读取XML文件
Resource resource = new ClassPathResource("citylist.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream(), "utf-8"));
StringBuffer buffer = new StringBuffer();
String line = "";

while ((line = br.readLine()) !=null) {
buffer.append(line);
}

br.close();

// XML转为Java对象
CityList cityList = (CityList)XmlBuilder.xmlStrToOject(CityList.class, buffer.toString());
return cityList.getCityList();
}


}



package com.waylau.spring.cloud.weather.controller;


import java.util.List;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import com.waylau.spring.cloud.weather.service.CityDataService;
import com.waylau.spring.cloud.weather.vo.City;
/**
 * Hello Controller.
 * 
 * @since 1.0.0 2017年11月20日
 * @author <a href="https://waylau.com">Way Lau</a> 
 */
@RestController
@RequestMapping("/cities")
public class CityController {

@Autowired
private CityDataService cityDataService;

@GetMapping
public List<City> listCity() throws Exception {
return cityDataService.listCity();
}

}





启动类:

package com.waylau.spring.cloud.weather;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;


@SpringBootApplication
@EnableDiscoveryClient
public class Application {


public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}


这里编写完毕,回到上篇博文去启动吧。

该博文是获取城市信息的。




猜你喜欢

转载自blog.csdn.net/qq_33371766/article/details/80655748