远程模式依赖注入

This commit is contained in:
redkale
2023-12-29 10:54:34 +08:00
parent 06a1d5d1bb
commit be202cef6a
2 changed files with 14 additions and 2 deletions

View File

@@ -252,6 +252,9 @@ public abstract class NodeServer {
@Override @Override
public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, final Object attachment) { public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, final Object attachment) {
try { try {
if ((srcObj instanceof Service) && Sncp.isRemote((Service) srcObj)) {
return null; //远程模式不得注入
}
Service nodeService = rf.find(resourceName, WebSocketNode.class); Service nodeService = rf.find(resourceName, WebSocketNode.class);
if (nodeService == null) { if (nodeService == null) {
final HashSet<String> groups = new HashSet<>(); final HashSet<String> groups = new HashSet<>();
@@ -298,6 +301,9 @@ public abstract class NodeServer {
if (resServiceType.getAnnotation(Local.class) == null) { if (resServiceType.getAnnotation(Local.class) == null) {
return null; return null;
} }
if ((srcObj instanceof Service) && Sncp.isRemote((Service) srcObj)) {
return null; //远程模式不得注入 AutoLoad Service
}
boolean auto = true; boolean auto = true;
AutoLoad al = resServiceType.getAnnotation(AutoLoad.class); AutoLoad al = resServiceType.getAnnotation(AutoLoad.class);
if (al != null) { if (al != null) {

View File

@@ -512,6 +512,9 @@ public class SourceModuleEngine extends ModuleEngine implements SourceManager {
@Override @Override
public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, final Object attachment) { public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, final Object attachment) {
try { try {
if ((srcObj instanceof Service) && Sncp.isRemote((Service) srcObj)) {
return null; //远程模式不得注入
}
DataSource source = loadDataSource(resourceName, false); DataSource source = loadDataSource(resourceName, false);
field.set(srcObj, source); field.set(srcObj, source);
return source; return source;
@@ -527,6 +530,9 @@ public class SourceModuleEngine extends ModuleEngine implements SourceManager {
@Override @Override
public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, final Object attachment) { public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, final Object attachment) {
try { try {
if ((srcObj instanceof Service) && Sncp.isRemote((Service) srcObj)) {
return null; //远程模式不得注入
}
if (srcObj instanceof Servlet) { if (srcObj instanceof Servlet) {
throw new RedkaleException("CacheSource cannot inject in Servlet " + srcObj); throw new RedkaleException("CacheSource cannot inject in Servlet " + srcObj);
} }