diff --git a/spring-cloud-alibaba-examples/env-extension/pom.xml b/spring-cloud-alibaba-examples/env-extension/pom.xml new file mode 100644 index 00000000..35d98346 --- /dev/null +++ b/spring-cloud-alibaba-examples/env-extension/pom.xml @@ -0,0 +1,37 @@ + + + + + org.springframework.boot + spring-boot-starter-parent + 2.0.6.RELEASE + + + + 4.0.0 + + alibaba.com + env-extension + 0.2.2.BUILD-SNAPSHOT + jar + + env-extension + Demo project for Spring Boot + + + UTF-8 + UTF-8 + 1.8 + + + + + + org.springframework.boot + spring-boot-starter-web + provided + + + + diff --git a/spring-cloud-alibaba-examples/env-extension/src/main/java/org/springframework/alicloud/env/extension/ImportExtraConfig.java b/spring-cloud-alibaba-examples/env-extension/src/main/java/org/springframework/alicloud/env/extension/ImportExtraConfig.java new file mode 100644 index 00000000..cfea09fa --- /dev/null +++ b/spring-cloud-alibaba-examples/env-extension/src/main/java/org/springframework/alicloud/env/extension/ImportExtraConfig.java @@ -0,0 +1,12 @@ +package org.springframework.alicloud.env.extension; + + +import java.lang.annotation.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ImportExtraConfig { + + String[] name() default ""; +} diff --git a/spring-cloud-alibaba-examples/env-extension/src/main/java/org/springframework/alicloud/env/extension/LoadExtraConfigApplicationListener.java b/spring-cloud-alibaba-examples/env-extension/src/main/java/org/springframework/alicloud/env/extension/LoadExtraConfigApplicationListener.java new file mode 100644 index 00000000..747ca68a --- /dev/null +++ b/spring-cloud-alibaba-examples/env-extension/src/main/java/org/springframework/alicloud/env/extension/LoadExtraConfigApplicationListener.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.alicloud.env.extension; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.core.env.PropertiesPropertySource; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + +/** + * @author pbting + * @date 2019-01-09 9:00 PM + */ +public class LoadExtraConfigApplicationListener implements ApplicationListener { + + @Override + public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) { + SpringApplication springApplication = event.getSpringApplication(); + Class clazz = springApplication.getMainApplicationClass(); + if (!clazz.isAnnotationPresent(ImportExtraConfig.class)) { + return; + } + ImportExtraConfig annotation = (ImportExtraConfig) clazz + .getAnnotation(ImportExtraConfig.class); + + String[] extraConfig = annotation.name(); + + if (extraConfig == null || extraConfig.length == 0) { + return; + } + + for (String config : extraConfig) { + try { + Properties properties = new Properties(); + properties.load(new FileInputStream(config)); + event.getEnvironment().getPropertySources() + .addFirst(new PropertiesPropertySource(config, properties)); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } +} \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/env-extension/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-examples/env-extension/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..d264a372 --- /dev/null +++ b/spring-cloud-alibaba-examples/env-extension/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.context.ApplicationListener=\ + org.springframework.alicloud.env.extension.LoadExtraConfigApplicationListener \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/pom.xml b/spring-cloud-alibaba-examples/pom.xml index 5f0f83c3..e742012a 100644 --- a/spring-cloud-alibaba-examples/pom.xml +++ b/spring-cloud-alibaba-examples/pom.xml @@ -23,6 +23,7 @@ sentinel-example/sentinel-dubbo-example/sentinel-dubbo-api nacos-example/nacos-discovery-example nacos-example/nacos-config-example + env-extension oss-example ans-example/ans-consumer-feign-example ans-example/ans-consumer-ribbon-example diff --git a/spring-cloud-alibaba-examples/sms-example/pom.xml b/spring-cloud-alibaba-examples/sms-example/pom.xml index 77069083..f466cc66 100644 --- a/spring-cloud-alibaba-examples/sms-example/pom.xml +++ b/spring-cloud-alibaba-examples/sms-example/pom.xml @@ -59,6 +59,11 @@ org.springframework.cloud spring-cloud-starter-alicloud-sms + + alibaba.com + env-extension + 0.2.2.BUILD-SNAPSHOT + diff --git a/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsApplication.java b/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsApplication.java index a5e89a9a..83f25a94 100644 --- a/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsApplication.java +++ b/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsApplication.java @@ -15,6 +15,7 @@ */ package org.springframework.cloud.alibaba.cloud.example; +import org.springframework.alicloud.env.extension.ImportExtraConfig; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -22,10 +23,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * */ @SpringBootApplication +@ImportExtraConfig(name = "/Users/toava/sms.properties") public class SmsApplication { - public static void main(String[] args) { - + public static void main(String[] args) throws Exception{ SpringApplication.run(SmsApplication.class, args); } } \ No newline at end of file diff --git a/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsController.java b/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsController.java index 496b97c0..97308e66 100644 --- a/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsController.java +++ b/spring-cloud-alibaba-examples/sms-example/src/main/java/org/springframework/cloud/alibaba/cloud/example/SmsController.java @@ -4,6 +4,8 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.alicloud.sms.ISmsService; +import org.springframework.core.env.Environment; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -16,12 +18,21 @@ import com.aliyuncs.http.MethodType; @RestController public class SmsController { + @Autowired + private Environment environment; + @Autowired private ISmsService smsService; @Autowired private SmsReportMessageListener smsReportMessageListener; + @GetMapping("/report-queue.do") + public String getSmsReportQueuename(){ + + return environment.getProperty("spring.cloud.alicloud.sms.up-queue-name"); + } + /** * 短信发送 Example * @param code diff --git a/spring-cloud-alibaba-examples/sms-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/sms-example/src/main/resources/application.properties index ae65c56b..8c689827 100644 --- a/spring-cloud-alibaba-examples/sms-example/src/main/resources/application.properties +++ b/spring-cloud-alibaba-examples/sms-example/src/main/resources/application.properties @@ -1,9 +1,4 @@ spring.application.name=sca-sms-example server.port=9051 # config management -management.endpoints.web.exposure.include=* -#config sms -spring.cloud.alicloud.access-key=****** -spring.cloud.alicloud.secret-key=****** -spring.cloud.alicloud.sms.report-queue-name=***** -spring.cloud.alicloud.sms.up-queue-name=****** \ No newline at end of file +management.endpoints.web.exposure.include=* \ No newline at end of file