- 配置的读取方式在上一篇文章中有提到。
- 取到值之后赋值给静态类里的静态变量。
- 因为SpringCloud项目启动的时候会把所有的api都执行一遍(相当蛋疼),所以这里直接就可以写一个方法进行赋值。
代码如下:
入口类:
package com.shinho;import java.util.Map;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import com.alibaba.fastjson.JSON;import com.shinho.log.ShinhoLog;@Configuration@EnableAutoConfiguration@ComponentScan(basePackages={"com.shinho"})@EnableWebMvc@EnableEurekaClient@RestControllerpublic class KylintestApplication { @Value("${foo}") String foo; private static final Logger logger = LoggerFactory.getLogger(KylintestApplication.class); public static void main(String[] args) { SpringApplication.run(KylintestApplication.class, args); } @RequestMapping("/log") @Bean public String Log() { logger.info("init:log"); ShinhoLog.foo = this.foo; String json = "log"; return json; } @RequestMapping("/hi") @Bean public String home() { String json = "123:"+ShinhoLog.info(); return json; }}
静态类:
package com.shinho.log;import java.io.File;import org.apache.commons.io.FileUtils;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.stereotype.Component;@Componentpublic class ShinhoLog { public static String foo; public static String info(){ return foo; } }
启动之后立即访问 http://localhost:XXXX/hi 这是会返回123:foo version 2, 完美!