Skip to content

Commit a808bc5

Browse files
committed
fix the issue brought by 0.10.0 that Spring related classes are mistakenly loaded via DefaultInjector, which causes exceptions when there is no Spring libraries available.
1 parent 37b6485 commit a808bc5

File tree

24 files changed

+84
-31
lines changed

24 files changed

+84
-31
lines changed

apollo-adminservice/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-adminservice/src/main/docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
FROM openjdk:8-jre-alpine
88
MAINTAINER ameizi <sxyx2008@163.com>
99

10-
ENV VERSION 0.10.0
10+
ENV VERSION 0.10.1
1111

1212
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
1313
&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \

apollo-assembly/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-biz/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
1010
<artifactId>apollo-biz</artifactId>

apollo-buildtools/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-client/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ If you need this functionality, you could specify the cluster as follows:
8888
<dependency>
8989
<groupId>com.ctrip.framework.apollo</groupId>
9090
<artifactId>apollo-client</artifactId>
91-
<version>0.10.0</version>
91+
<version>0.10.1</version>
9292
</dependency>
9393

9494
## III. Client Usage

apollo-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-client/src/main/java/com/ctrip/framework/apollo/build/ApolloInjector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*/
1111
public class ApolloInjector {
1212
private static volatile Injector s_injector;
13-
private static Object lock = new Object();
13+
private static final Object lock = new Object();
1414

1515
private static Injector getInjector() {
1616
if (s_injector == null) {

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/DefaultInjector.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
import com.ctrip.framework.apollo.spi.DefaultConfigFactory;
88
import com.ctrip.framework.apollo.spi.DefaultConfigFactoryManager;
99
import com.ctrip.framework.apollo.spi.DefaultConfigRegistry;
10-
import com.ctrip.framework.apollo.spring.config.ConfigPropertySourceFactory;
11-
import com.ctrip.framework.apollo.spring.property.PlaceholderHelper;
12-
import com.ctrip.framework.apollo.spring.property.SpringValueRegistry;
1310
import com.ctrip.framework.apollo.tracer.Tracer;
1411
import com.ctrip.framework.apollo.util.ConfigUtil;
1512
import com.ctrip.framework.apollo.util.http.HttpUtil;
@@ -63,9 +60,6 @@ protected void configure() {
6360
bind(HttpUtil.class).in(Singleton.class);
6461
bind(ConfigServiceLocator.class).in(Singleton.class);
6562
bind(RemoteConfigLongPollService.class).in(Singleton.class);
66-
bind(PlaceholderHelper.class).in(Singleton.class);
67-
bind(ConfigPropertySourceFactory.class).in(Singleton.class);
68-
bind(SpringValueRegistry.class).in(Singleton.class);
6963
}
7064
}
7165
}

apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/ApolloJsonValueProcessor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.ctrip.framework.apollo.spring.property.PlaceholderHelper;
66
import com.ctrip.framework.apollo.spring.property.SpringValue;
77
import com.ctrip.framework.apollo.spring.property.SpringValueRegistry;
8+
import com.ctrip.framework.apollo.spring.util.SpringInjector;
89
import com.ctrip.framework.apollo.util.ConfigUtil;
910
import com.google.common.base.Preconditions;
1011
import com.google.gson.Gson;
@@ -37,8 +38,8 @@ public class ApolloJsonValueProcessor extends ApolloProcessor implements BeanFac
3738

3839
public ApolloJsonValueProcessor() {
3940
configUtil = ApolloInjector.getInstance(ConfigUtil.class);
40-
placeholderHelper = ApolloInjector.getInstance(PlaceholderHelper.class);
41-
springValueRegistry = ApolloInjector.getInstance(SpringValueRegistry.class);
41+
placeholderHelper = SpringInjector.getInstance(PlaceholderHelper.class);
42+
springValueRegistry = SpringInjector.getInstance(SpringValueRegistry.class);
4243
}
4344

4445
@Override

apollo-client/src/main/java/com/ctrip/framework/apollo/spring/annotation/SpringValueProcessor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.ctrip.framework.apollo.spring.property.SpringValueDefinition;
88
import com.ctrip.framework.apollo.spring.property.SpringValueDefinitionProcessor;
99
import com.ctrip.framework.apollo.spring.property.SpringValueRegistry;
10+
import com.ctrip.framework.apollo.spring.util.SpringInjector;
1011
import com.ctrip.framework.apollo.util.ConfigUtil;
1112
import com.google.common.collect.LinkedListMultimap;
1213
import com.google.common.collect.Multimap;
@@ -43,8 +44,8 @@ public class SpringValueProcessor extends ApolloProcessor implements BeanFactory
4344

4445
public SpringValueProcessor() {
4546
configUtil = ApolloInjector.getInstance(ConfigUtil.class);
46-
placeholderHelper = ApolloInjector.getInstance(PlaceholderHelper.class);
47-
springValueRegistry = ApolloInjector.getInstance(SpringValueRegistry.class);
47+
placeholderHelper = SpringInjector.getInstance(PlaceholderHelper.class);
48+
springValueRegistry = SpringInjector.getInstance(SpringValueRegistry.class);
4849
}
4950

5051
@Override

apollo-client/src/main/java/com/ctrip/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.ctrip.framework.apollo.core.ConfigConsts;
77
import com.ctrip.framework.apollo.spring.config.ConfigPropertySourceFactory;
88
import com.ctrip.framework.apollo.spring.config.PropertySourcesConstants;
9+
import com.ctrip.framework.apollo.spring.util.SpringInjector;
910
import com.google.common.base.Splitter;
1011
import java.util.List;
1112
import org.slf4j.Logger;
@@ -37,7 +38,7 @@ public class ApolloApplicationContextInitializer implements
3738
private static final Logger logger = LoggerFactory.getLogger(ApolloApplicationContextInitializer.class);
3839
private static final Splitter NAMESPACE_SPLITTER = Splitter.on(",").omitEmptyStrings().trimResults();
3940

40-
private final ConfigPropertySourceFactory configPropertySourceFactory = ApolloInjector
41+
private final ConfigPropertySourceFactory configPropertySourceFactory = SpringInjector
4142
.getInstance(ConfigPropertySourceFactory.class);
4243

4344
@Override

apollo-client/src/main/java/com/ctrip/framework/apollo/spring/config/PropertySourcesProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.ctrip.framework.apollo.build.ApolloInjector;
44
import com.ctrip.framework.apollo.spring.property.AutoUpdateConfigChangeListener;
5+
import com.ctrip.framework.apollo.spring.util.SpringInjector;
56
import com.ctrip.framework.apollo.util.ConfigUtil;
67
import com.google.common.collect.ImmutableSortedSet;
78
import com.google.common.collect.LinkedHashMultimap;
@@ -39,7 +40,7 @@ public class PropertySourcesProcessor implements BeanFactoryPostProcessor, Envir
3940
private static final Multimap<Integer, String> NAMESPACE_NAMES = LinkedHashMultimap.create();
4041
private static final AtomicBoolean INITIALIZED = new AtomicBoolean(false);
4142

42-
private final ConfigPropertySourceFactory configPropertySourceFactory = ApolloInjector
43+
private final ConfigPropertySourceFactory configPropertySourceFactory = SpringInjector
4344
.getInstance(ConfigPropertySourceFactory.class);
4445
private final ConfigUtil configUtil = ApolloInjector.getInstance(ConfigUtil.class);
4546
private ConfigurableEnvironment environment;

apollo-client/src/main/java/com/ctrip/framework/apollo/spring/property/AutoUpdateConfigChangeListener.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.ctrip.framework.apollo.model.ConfigChange;
77
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
88
import com.ctrip.framework.apollo.spring.annotation.SpringValueProcessor;
9+
import com.ctrip.framework.apollo.spring.util.SpringInjector;
910
import com.google.gson.Gson;
1011
import java.lang.reflect.Field;
1112
import java.lang.reflect.Type;
@@ -39,8 +40,8 @@ public AutoUpdateConfigChangeListener(Environment environment, ConfigurableLista
3940
this.beanFactory = beanFactory;
4041
this.typeConverter = this.beanFactory.getTypeConverter();
4142
this.environment = environment;
42-
this.placeholderHelper = ApolloInjector.getInstance(PlaceholderHelper.class);
43-
this.springValueRegistry = ApolloInjector.getInstance(SpringValueRegistry.class);
43+
this.placeholderHelper = SpringInjector.getInstance(PlaceholderHelper.class);
44+
this.springValueRegistry = SpringInjector.getInstance(SpringValueRegistry.class);
4445
this.gson = new Gson();
4546
}
4647

apollo-client/src/main/java/com/ctrip/framework/apollo/spring/property/SpringValueDefinitionProcessor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.ctrip.framework.apollo.spring.property;
22

3+
import com.ctrip.framework.apollo.spring.util.SpringInjector;
34
import java.util.List;
45
import java.util.Set;
56

@@ -38,7 +39,7 @@ public class SpringValueDefinitionProcessor implements BeanDefinitionRegistryPos
3839

3940
public SpringValueDefinitionProcessor() {
4041
configUtil = ApolloInjector.getInstance(ConfigUtil.class);
41-
placeholderHelper = ApolloInjector.getInstance(PlaceholderHelper.class);
42+
placeholderHelper = SpringInjector.getInstance(PlaceholderHelper.class);
4243
}
4344

4445
@Override
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.ctrip.framework.apollo.spring.util;
2+
3+
import com.ctrip.framework.apollo.exceptions.ApolloConfigException;
4+
import com.ctrip.framework.apollo.spring.config.ConfigPropertySourceFactory;
5+
import com.ctrip.framework.apollo.spring.property.PlaceholderHelper;
6+
import com.ctrip.framework.apollo.spring.property.SpringValueRegistry;
7+
import com.ctrip.framework.apollo.tracer.Tracer;
8+
import com.google.inject.AbstractModule;
9+
import com.google.inject.Guice;
10+
import com.google.inject.Injector;
11+
import com.google.inject.Singleton;
12+
13+
public class SpringInjector {
14+
private static volatile Injector s_injector;
15+
private static final Object lock = new Object();
16+
17+
private static Injector getInjector() {
18+
if (s_injector == null) {
19+
synchronized (lock) {
20+
if (s_injector == null) {
21+
try {
22+
s_injector = Guice.createInjector(new SpringModule());
23+
} catch (Throwable ex) {
24+
ApolloConfigException exception = new ApolloConfigException("Unable to initialize Apollo Spring Injector!", ex);
25+
Tracer.logError(exception);
26+
throw exception;
27+
}
28+
}
29+
}
30+
}
31+
32+
return s_injector;
33+
}
34+
35+
public static <T> T getInstance(Class<T> clazz) {
36+
try {
37+
return getInjector().getInstance(clazz);
38+
} catch (Throwable ex) {
39+
Tracer.logError(ex);
40+
throw new ApolloConfigException(
41+
String.format("Unable to load instance for %s!", clazz.getName()), ex);
42+
}
43+
}
44+
45+
private static class SpringModule extends AbstractModule {
46+
@Override
47+
protected void configure() {
48+
bind(PlaceholderHelper.class).in(Singleton.class);
49+
bind(ConfigPropertySourceFactory.class).in(Singleton.class);
50+
bind(SpringValueRegistry.class).in(Singleton.class);
51+
}
52+
}
53+
}

apollo-common/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-configservice/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-configservice/src/main/docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
FROM openjdk:8-jre-alpine
88
MAINTAINER ameizi <sxyx2008@163.com>
99

10-
ENV VERSION 0.10.0
10+
ENV VERSION 0.10.1
1111

1212
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
1313
&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \

apollo-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-demo/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>apollo</artifactId>
66
<groupId>com.ctrip.framework.apollo</groupId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
1010
<artifactId>apollo-demo</artifactId>

apollo-portal/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>com.ctrip.framework.apollo</groupId>
66
<artifactId>apollo</artifactId>
7-
<version>0.10.0</version>
7+
<version>0.10.1</version>
88
<relativePath>../pom.xml</relativePath>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>

apollo-portal/src/main/docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
FROM openjdk:8-jre-alpine
1010
MAINTAINER ameizi <sxyx2008@163.com>
1111

12-
ENV VERSION 0.10.0
12+
ENV VERSION 0.10.1
1313

1414
RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \
1515
&& echo "http://mirrors.aliyun.com/alpine/v3.6/community" >> /etc/apk/repositories \

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.ctrip.framework.apollo</groupId>
77
<artifactId>apollo</artifactId>
8-
<version>0.10.0</version>
8+
<version>0.10.1</version>
99
<name>Apollo</name>
1010
<packaging>pom</packaging>
1111
<description>Ctrip Configuration Center</description>

0 commit comments

Comments
 (0)