• Daily Archives: 2019年10月17日

MyEclipse/Eclipse中properties文件中文乱码问题解决

有时候在myeclipse或者eclipse中打开properties文件时会发现其中的中文都是乱码。这是由于当前的properties文件编码格式不支持汉字造成的。当这种情况发生时,我们可以按照以下两种方式更改文件的编码格式即可。方法一可以一次性更改所有项目的properties文件编码格式。方法二可以根据需要有选择地对某些文件进行更改。

方法一:依次点击windows-preferences-content-text-Java properties file,并将弹出窗和右下方的default encoding该为GBK,然后依次点击update-OK关闭弹出窗格即可。另外,在次窗口中,如果在右侧上方窗格内选择其他文件类型,则可以对其他文件的编码进行全局更改。

123

方法二:右击某个需要更改的properties文件,选择properties,在弹出窗的左侧树状目录上选择Resource,右下方的text file encoding编辑区内点击other,然后选择GBK(如果没有,可直接手动输入),最后依次点击apply-ok关闭弹出窗口即可。

234

SpringBoot2.1.x+SpringCloud:Eureka(server+client)入门+高可用配置

eureka

一、Eureka服务器+Eureka服务提供者

1、首先到https://start.spring.io/中创建版本为2.1.x项目,在本地的IDEA导入后,首先在pom.xml中增加以下依赖(在pom.xml的<dependencies></dependencies>之间):

<!--Netflix Eureka依赖-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2、然后在pom.xml的<project></project>之间增加以下关于springcloud的版本管理:

<dependencyManagement>
	<dependencies>
		<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-dependencies</artifactId>
		<version>${spring-cloud.version}</version>
		<type>pom</type>
		<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

3、接着在在pom.xml的<properties></properties>中增加以下配置(注意:Greenwich对应的是springboot2.1.x版本,如果换成其他的会报错,就这个坑把我坑了一个下午):

<spring-cloud.version>Greenwich.SR3</spring-cloud.version>

4、还有在application.properties中增加如下配置:

1)eureka服务器是这样配置的:

server.port=8761

spring.application.name=eureka-server-1

#注册的域名(注意:可以使用localhost,但在高可用时,不同的eureka-server必须要使用不同的hostname,否则无法相互发现)
eureka.instance.hostname=eureka-server-1
#是否向注册中心注册自己(非高可用时为false,高可用时为true)
eureka.client.registerWithEureka=true
#是否从eureka上获取信息(非高可用时为false,高可用时为true)
eureka.client.fetchRegistry=true
#eureka通信地址(非高可用时写自己的eureka-server地址,高可用时填高可用的目标eureka-server地址)
eureka.client.serviceUrl.defaultZone=http\://eureka-server-2\:8762/eureka/

2)eureka服务提供者是这样配置的:

server.port=8771

spring.application.name=client1

eureka.instance.prefer-ip-address=true
#多个eureka-server时可用","号分隔
eureka.client.serviceUrl.defaultZone=http\://localhost\:8761/eureka/

5、最后在springboot的启动文件xxxApplication.java中增加对应的注解:

1)eureka服务器要使用@EnableEurekaServer注解:

package com.zero4j.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

}

2)eureka服务器要使用@EurekaClient1Application注解:

package com.zero4j.eurekaclient1;

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

@SpringBootApplication
@EnableDiscoveryClient   //也可以用EnableDiscoveryClient代替,前者兼容性更大,后者仅能兼容Eureka
public class EurekaClient1Application {

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

}

 

访问eureka-server对应的端口,将会显示以下是最终的运行结果:

123

 

二、Eureka服务消费者的相关配置

1、首先到https://start.spring.io/中创建版本为2.1.x项目,在本地的IDEA导入后,首先在pom.xml中增加以下依赖(在pom.xml的<dependencies></dependencies>之间):

<!--Netflix Eureka依赖-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

2、然后在pom.xml的<project></project>之间增加以下关于springcloud的版本管理:

<dependencyManagement>
	<dependencies>
		<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-dependencies</artifactId>
		<version>${spring-cloud.version}</version>
		<type>pom</type>
		<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

3、接着在在pom.xml的<properties></properties>中增加以下配置(注意:Greenwich对应的是springboot2.1.x版本,如果换成其他的会报错,就这个坑把我坑了一个下午):

<spring-cloud.version>Greenwich.SR3</spring-cloud.version>

4、还有在application.properties中增加如下配置:

#消费者端口
server.port=8081
spring.application.name=eureka-consumer-1
eureka.instance.hostname=localhost
eureka.client.service-url.defaultZone=http\://localhost\:8761/eureka/,http\://localhost\:8762/eureka/

5、创建RestTemplate模板配置

package com.zero4j.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
	
	/**
     * RestTemplate:提供了多种便捷访问远程Http服务的方法
     * 是一种简单便捷访问Restful服务模板类,提供用于访问Rest服务的客户端模板类
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
    
}

6、消费者调用eureka服务示例

package com.zero4j.controller;

import java.util.Random;

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 org.springframework.web.client.RestTemplate;

@RestController
@RequestMapping("/")
public class TestControllerProvider {
	
	@Autowired
    private RestTemplate restTemplate;

	@GetMapping("/test")
    public String test() {
		
		//通过服务提供者名称调用
		//List<Dept> depts = restTemplate.getForObject("http://wzx-spring-cloud-provider/dept/findAll", List.class);
		//return depts;
		
		String test = restTemplate.getForObject("http://eureka-client-1/test", String.class);
		
		return test;
    }
	
}

7、服务提供者的java示例

package com.zero4j.controller;

import java.util.Random;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class TestControllerProvider {

	@GetMapping("/test")
    public String test() {
        return "服务提供者1:"+String.valueOf((new Random()).nextInt());
    }
	
}
close