Commit c7aed1bc authored by lihaipeng's avatar lihaipeng

modify

parent e890275f
......@@ -21,8 +21,8 @@ public interface UserApi {
List<User> list();
@ApiOperation(value = "用户详情")
@GetMapping("/user/get")
User get(@RequestParam("name") String name);
@GetMapping(value = "/user/get", produces = MediaType.APPLICATION_JSON_VALUE)
User get(@RequestParam("name") String name, @RequestParam("age") Integer age);
@ApiOperation(value = "用户添加")
@PostMapping(value = "/user/add", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
......
......@@ -2,7 +2,6 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>unififi-spring-cloud-guide</artifactId>
......@@ -69,7 +68,6 @@
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<!-- 数据库相关 -->
<!--MySQL配置-->
<dependency>
<groupId>com.alibaba</groupId>
......@@ -85,7 +83,6 @@
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
......
package com.unififi.config.logger;
package com.unififi.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
@Configuration
@ConfigurationProperties(ignoreInvalidFields = true, prefix = LoggerConfig.PREFIX)
public class LoggerConfig {
@RefreshScope
@ConfigurationProperties(ignoreInvalidFields = true, prefix = UnififiProperties.PREFIX)
public class UnififiProperties {
public static final String PREFIX = "unififi.logger";
public static final String PREFIX = "unififi";
private Setting feign = new Setting();
private Setting rest = new Setting();
private Setting controller = new Setting();
private Logger logger = new Logger();
private Header header = new Header();
public Setting getFeign() {
return feign;
public Logger getLogger() {
return logger;
}
public void setFeign(Setting feign) {
this.feign = feign;
public void setLogger(Logger logger) {
this.logger = logger;
}
public Setting getRest() {
return rest;
public Header getHeader() {
return header;
}
public void setRest(Setting rest) {
this.rest = rest;
public void setHeader(Header header) {
this.header = header;
}
public Setting getController() {
return controller;
public static class Logger {
private Setting feign = new Setting();
private Setting rest = new Setting();
private Setting controller = new Setting();
public Setting getFeign() {
return feign;
}
public void setFeign(Setting feign) {
this.feign = feign;
}
public Setting getRest() {
return rest;
}
public void setRest(Setting rest) {
this.rest = rest;
}
public Setting getController() {
return controller;
}
public void setController(Setting controller) {
this.controller = controller;
}
}
public void setController(Setting controller) {
this.controller = controller;
public static class Header {
private List<String> throughNames = new ArrayList<>();
public List<String> getThroughNames() {
return throughNames;
}
public void setThroughNames(List<String> throughNames) {
this.throughNames = throughNames;
}
}
public static class Setting {
......@@ -82,5 +117,4 @@ public class LoggerConfig {
this.showSpendms = showSpendms;
}
}
}
......@@ -2,7 +2,7 @@ package com.unififi.config.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.unififi.config.logger.LoggerConfig;
import com.unififi.config.UnififiProperties;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
......@@ -24,7 +24,7 @@ public class ControllerLogAspect {
private final static Logger logger = LoggerFactory.getLogger("ControllerAspectLog");
@Autowired
private LoggerConfig loggerConfig;
private UnififiProperties unififiProperties;
@Pointcut("execution(* com.unififi.controller.*.*(..))")
public void printLog() {
......@@ -42,8 +42,8 @@ public class ControllerLogAspect {
} else if ("GET".equalsIgnoreCase(request.getMethod())) {
requestData = request.getQueryString();
}
if (logger.isInfoEnabled() && loggerConfig.getController().isEnabled()) {
if (!loggerConfig.getController().getSkipMethodSigns().contains(pjp.getSignature().toShortString())) {
if (logger.isInfoEnabled() && unififiProperties.getLogger().getController().isEnabled()) {
if (!unififiProperties.getLogger().getController().getSkipMethodSigns().contains(pjp.getSignature().toShortString())) {
logger.info("Unififi-REQ-[{}] {}", pjp.getSignature().toShortString(), (requestData != null ? requestData : ""));
}
}
......@@ -53,9 +53,9 @@ public class ControllerLogAspect {
if (result != null) {
responseData = JSON.toJSONString(result);
}
if (logger.isInfoEnabled() && loggerConfig.getController().isEnabled()) {
if (!loggerConfig.getController().getSkipMethodSigns().contains(pjp.getSignature().toShortString())) {
if (loggerConfig.getController().getIgnoreResponseDataMethodSigns().contains(pjp.getSignature().toShortString())) {
if (logger.isInfoEnabled() && unififiProperties.getLogger().getController().isEnabled()) {
if (!unififiProperties.getLogger().getController().getSkipMethodSigns().contains(pjp.getSignature().toShortString())) {
if (unififiProperties.getLogger().getController().getIgnoreResponseDataMethodSigns().contains(pjp.getSignature().toShortString())) {
logger.info("Unififi-RESP-[{}] IGNORE_DATA size:{} spend:{}ms", pjp.getSignature().toShortString(), (responseData != null ? responseData.length() : 0), elapsedTime);
} else {
logger.info("Unififi-RESP-[{}] {} size:{} spend:{}ms", pjp.getSignature().toShortString(), (responseData != null ? responseData : ""), (responseData != null ? responseData.length() : 0), elapsedTime);
......@@ -64,7 +64,7 @@ public class ControllerLogAspect {
}
return result;
} catch (Throwable throwable) {
if (logger.isErrorEnabled() && loggerConfig.getController().isEnabled()) {
if (logger.isErrorEnabled() && unififiProperties.getLogger().getController().isEnabled()) {
logger.error("Unififi-RESP-[{}] {}: {}", pjp.getSignature().toShortString(), throwable.getClass().getSimpleName(), throwable.getMessage());
}
return throwable;
......
package com.unififi.config.feign;
import com.unififi.config.logger.LoggerConfig;
import com.unififi.config.UnififiProperties;
import feign.Logger;
import feign.RequestInterceptor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.openfeign.FeignLoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Configuration
public class FeignConfig {
@Autowired
private UnififiProperties unififiProperties;
@Bean
@ConditionalOnMissingBean(LoggerConfig.class)
LoggerConfig loggerConfig() {
return new LoggerConfig();
@ConditionalOnMissingBean(UnififiProperties.class)
UnififiProperties loggerConfig() {
return new UnififiProperties();
}
@Bean
......@@ -22,8 +32,27 @@ public class FeignConfig {
}
@Bean
FeignLoggerFactory infoFeignLoggerFactory(LoggerConfig loggerConfig) {
return new UnififiFeignLoggerFactory(loggerConfig.getFeign());
FeignLoggerFactory infoFeignLoggerFactory(UnififiProperties unififiProperties) {
return new UnififiFeignLoggerFactory(unififiProperties.getLogger().getFeign());
}
@Bean
public RequestInterceptor headerInterceptor() {
return requestTemplate -> {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
if (attributes == null) {
return;
}
HttpServletRequest request = attributes.getRequest();
for (String headerName : unififiProperties.getHeader().getThroughNames()) {
String token = request.getHeader(headerName);
if (StringUtils.isNotEmpty(token)) {
requestTemplate.header(headerName, token);
}
}
};
}
}
package com.unififi.config.feign;
import com.unififi.config.logger.LoggerConfig;
import com.unififi.config.UnififiProperties;
import feign.Request;
import feign.Response;
import feign.Util;
......@@ -15,9 +15,9 @@ import static feign.Util.decodeOrDefault;
public class UnififiFeignLogger extends feign.Logger {
private static final Logger logger = LoggerFactory.getLogger("FeignLog");
// private final Logger logger;
private LoggerConfig.Setting setting;
private UnififiProperties.Setting setting;
public UnififiFeignLogger(Logger logger, LoggerConfig.Setting setting) {
public UnififiFeignLogger(Logger logger, UnififiProperties.Setting setting) {
// this.logger = logger;
this.setting = setting;
}
......
package com.unififi.config.feign;
import com.unififi.config.logger.LoggerConfig;
import com.unififi.config.UnififiProperties;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FeignLoggerFactory;
public class UnififiFeignLoggerFactory implements FeignLoggerFactory {
private LoggerConfig.Setting setting;
private UnififiProperties.Setting setting;
public UnififiFeignLoggerFactory(LoggerConfig.Setting setting) {
public UnififiFeignLoggerFactory(UnififiProperties.Setting setting) {
this.setting = setting;
}
......
......@@ -2,7 +2,7 @@ package com.unififi.config.rest;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.google.common.base.Charsets;
import com.unififi.config.logger.LoggerConfig;
import com.unififi.config.UnififiProperties;
import org.apache.http.client.HttpClient;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
......@@ -24,9 +24,9 @@ import java.util.List;
public class RestTemplateConfig {
@Bean
@ConditionalOnMissingBean(LoggerConfig.class)
LoggerConfig loggerConfig() {
return new LoggerConfig();
@ConditionalOnMissingBean(UnififiProperties.class)
UnififiProperties loggerConfig() {
return new UnififiProperties();
}
@Bean
......@@ -39,10 +39,10 @@ public class RestTemplateConfig {
@LoadBalanced
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory httpRequestFactory, LoggerConfig loggerConfig, FastJsonHttpMessageConverter fastJsonHttpMessageConverter) {
public RestTemplate restTemplate(ClientHttpRequestFactory httpRequestFactory, UnififiProperties unififiProperties, FastJsonHttpMessageConverter fastJsonHttpMessageConverter) {
BufferingClientHttpRequestFactory bufferingClientHttpRequestFactory = new BufferingClientHttpRequestFactory(httpRequestFactory);
RestTemplate restTemplate = new RestTemplate(bufferingClientHttpRequestFactory);
restTemplate.getInterceptors().add(new RestTemplateLogInterceptor(loggerConfig.getRest()));
restTemplate.getInterceptors().add(new RestTemplateLogInterceptor(unififiProperties.getLogger().getRest()));
//fastjson 替换 jackson
List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
......
package com.unififi.config.rest;
import com.unififi.config.logger.LoggerConfig;
import com.unififi.config.UnififiProperties;
import org.apache.commons.codec.Charsets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -18,9 +18,9 @@ import java.util.concurrent.TimeUnit;
public class RestTemplateLogInterceptor implements ClientHttpRequestInterceptor {
private static final Logger logger = LoggerFactory.getLogger("RestTemplateLog");
private LoggerConfig.Setting setting;
private UnififiProperties.Setting setting;
public RestTemplateLogInterceptor(LoggerConfig.Setting setting) {
public RestTemplateLogInterceptor(UnififiProperties.Setting setting) {
this.setting = setting;
}
......
......@@ -13,10 +13,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
......@@ -41,7 +43,8 @@ public class Demo1Controller {
private UnififiTask unififiTask;
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Autowired
private HttpServletRequest request;
@GetMapping("/echo/{string}")
public String echo(@PathVariable String string) {
......@@ -54,18 +57,21 @@ public class Demo1Controller {
}
@GetMapping("/user/get")
public User userGet(@RequestParam("name") String name) {
return userApi.get(name);
public User userGet(@RequestParam("name") String name, @RequestParam("age") Integer age, @RequestHeader HttpHeaders headers) {
log.info("header. token:{}", request.getHeader("token"));
return userApi.get(name, age);
}
@GetMapping("/user/get/v2")
public User userGetV2(@RequestParam("name") String name) {
return restTemplate.getForObject("http://unififi-demo2-service/user/get?name=demoData", User.class);
public User userGetV2(@RequestParam("name") String name, @RequestParam("age") Integer age) {
log.info("header. token:{}", request.getHeader("token"));
return restTemplate.getForObject("http://unififi-demo2-service/user/get?name=" + name + "&age=" + age, User.class);
}
@GetMapping(value = "/user/list")
public List<User> userList() {
// return userApi.list();
log.info("header. token:{}", request.getHeader("token"));
return restTemplate.getForObject("http://unififi-demo2-service/user/list", List.class);
}
......
......@@ -9,6 +9,8 @@ server:
exposure:
include: '*'
spring:
profiles:
active: dev
application:
name: unififi-demo1-service
cloud:
......@@ -33,29 +35,12 @@ spring:
refresh: false
group: DEFAULT_GROUP
discovery:
#ip: 39.106.6.97
metadata:
unififi.mode: ${unififi.mode}
#unififi.grayscale: ${unififi.grayscale:}
unififi.env: ${spring.profiles.active:}
unififi.service.version: '@unififi-service.version@'
unififi.env: ${spring.profiles.active}
task:
execution:
thread-name-prefix: task-
pool:
max-size: 8
core-size: 8
queue-capacity: 50
keep-alive: 60s
allow-core-thread-timeout: true
scheduling:
thread-name-prefix: scheduling-
pool:
size: 1
#rocketmq:
# name-server: 39.106.6.97:9876
# producer:
# group: ${spring.application.name}
user.home: ${user.home}
# 测试时使用配置服务列表
#unififi-demo2-service:
# ribbon:
......
package com.unififi.controller;
import com.alibaba.fastjson.JSON;
import com.unififi.api.UserApi;
import com.unififi.config.AppConfig;
import com.unififi.model.User;
import com.unififi.service.UserService;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@RestController
@Api(tags = "用户操作")
@Slf4j
public class Demo2Controller implements UserApi {
@Autowired
private UserService userService;
@Autowired
private AppConfig appConfig;
@Autowired
HttpServletRequest request;
@Override
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
......@@ -31,6 +37,7 @@ public class Demo2Controller implements UserApi {
@Override
@PostMapping(value = "/user/add", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public Boolean add(@RequestBody User user) {
log.info("user/add. {}", JSON.toJSONString(user));
return userService.add(user);
}
......@@ -47,8 +54,9 @@ public class Demo2Controller implements UserApi {
@Override
@GetMapping(value = "/user/get", produces = MediaType.APPLICATION_JSON_VALUE)
public User get(@RequestParam("name") String name) {
System.out.println("user/get " + name);
public User get(@RequestParam("name") String name, @RequestParam("age") Integer age) {
log.info("user/get. name:{}, age:{}", name, age);
log.info("header. token:{}", request.getHeader("token"));
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
......
......@@ -28,20 +28,17 @@ spring:
- data-id: unififi-jdbc.yaml
refresh: false
group: DEFAULT_GROUP
- data-id: unififi-rocketmq.yaml
refresh: false
group: DEFAULT_GROUP
discovery:
#ip: 39.106.6.97
metadata:
unififi.mode: ${unififi.mode}
#unififi.grayscale: ${unififi.grayscale:}
unififi.env: ${spring.profiles.active:}
unififi.service.version: '@unififi-service.version@'
user.home: ${user.home}
rocketmq:
name-server: 39.106.6.97:9876
producer:
group: unififi-demo2-service
......
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="LOG_HOME" value="/data/log/java_web"/>
<springProperty scope="context" name="logPath" source="unififi.logs.path" defaultValue="${user.home}/logs"/>
<property name="LOG_HOME" value="${logPath}"/>
<property name="APP_NAME" value="unififi-demo2-service"/>
<!-- 控制台输出 -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment