package org.dayatang.ioc.spring.factory;
import org.dayatang.domain.InstanceFactory;
import org.dayatang.domain.InstanceProvider;
public class SpringIocUtils {
private static final ThreadLocal<SpringInstanceProvider> providerHolder = new ThreadLocal<SpringInstanceProvider>();
private SpringIocUtils() {
super();
}
public static void initInstanceProvider(Class<?>... annotatedClasses) {
InstanceFactory.setInstanceProvider(getInstanceProvider(annotatedClasses));
}
private static InstanceProvider getInstanceProvider(Class<?>[] annotatedClasses) {
SpringInstanceProvider result = providerHolder.get();
if (result != null) {
return result;
}
synchronized (SpringIocUtils.class) {
result = new SpringInstanceProvider(annotatedClasses);
providerHolder.set(result);
return result;
}
}
public static void initInstanceProvider(String... acFiles) {
InstanceFactory.setInstanceProvider(getInstanceProvider(acFiles));
}
private static InstanceProvider getInstanceProvider(String... acFiles) {
SpringInstanceProvider result = providerHolder.get();
if (result != null) {
return result;
}
synchronized (SpringIocUtils.class) {
result = new SpringInstanceProvider(acFiles);
providerHolder.set(result);
return result;
}
}
}