目录结构如下
接口类
public interface EtkClient { static EtkClient getInstance(){ return null; } String getToken(); String getTokenKey(); String getUrl(); String getReturnMode(); String getShipway(); String getType(); }
工厂类
@Component public class EtkFactory { public static EtkClient getEtkByName(String specificName){ switch (specificName){ case "ETK" : return EtkCurrencyVo.getInstance(); case "ETK-AM" : return EtkAmVo.getInstance(); case "OMALL" : return EtkOmallVo.getInstance(); } throw new RuntimeException("配置文件出错,请检查配置文件!"); } }
对象
package com.ecms.cbc.etkFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @Component @Configuration @PropertySource("classpath:application-etk.properties") @ConfigurationProperties(prefix = "etk.am") public class EtkAmVo implements EtkClient{ private static String token; private static String tokenKey; private static String type; private static String url; private static String returnMode; private static String shipway; public static EtkAmVo etkAmVo ; public static synchronized EtkClient getInstance() { if(etkAmVo == null){ etkAmVo = new EtkAmVo( token, tokenKey, type, url, returnMode, shipway); } return etkAmVo; } public EtkAmVo() { } public EtkAmVo(String token, String tokenKey, String type, String url, String returnMode, String shipway) { EtkAmVo.token = token; EtkAmVo.tokenKey = tokenKey; EtkAmVo.type = type; EtkAmVo.url = url; EtkAmVo.returnMode = returnMode; EtkAmVo.shipway = shipway; } @Override public String getToken() { return token; } public void setToken(String token) { System.out.println("++++++++++++++++++++++++++++++++++++"+token); EtkAmVo.token = token; } @Override public String getTokenKey() { return tokenKey; } public void setTokenKey(String tokenKey) { EtkAmVo.tokenKey = tokenKey; } @Override public String getType() { return type; } public void setType(String type) { EtkAmVo.type = type; } @Override public String getUrl() { return url; } public void setUrl(String url) { EtkAmVo.url = url; } @Override public String getReturnMode() { return returnMode; } public void setReturnMode(String returnMode) { EtkAmVo.returnMode = returnMode; } @Override public String getShipway() { return shipway; } public void setShipway(String shipway) { EtkAmVo.shipway = shipway; } }
springboot支持外部配置文件,因此可以根据业务需要,将业务配置和程序配置分开引入,但是springboot默认的配置文件格式名称为application-xxx.properties,文件位置为resources文件夹下。
多模块项目的程序配置在application.properties里面使用
spring.profiles.active=web,service
业务配置使用类使用
spring.profiles.include=xxx
这样可以最大限度的保证配置文件的结构清晰