- 配置的读取方式在上一篇文章中有提到。
- 取到值之后赋值给静态类里的静态变量。
- 因为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 @RestController public 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; @Component public class ShinhoLog { public static String foo; public static String info(){ return foo; } }
启动之后立即访问 http://localhost:XXXX/hi 这是会返回123:foo version 2, 完美!