All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.blade.ioc.loader.IocAnnotationLoader Maven / Gradle / Ivy

There is a newer version: 1.7.2-beta
Show newest version
/**
 * Copyright (c) 2016, biezhi 王爵 ([email protected])
 * 

* 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 com.blade.ioc.loader; import com.blade.ioc.SimpleIoc; import com.blade.ioc.annotation.Component; import com.blade.kit.CollectionKit; import com.blade.kit.resource.ClassInfo; import com.blade.kit.resource.ClassReader; import com.blade.mvc.context.DynamicContext; import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; /** * Ioc annotation loader * * @author biezhi * @since 1.5 */ public final class IocAnnotationLoader implements IocLoader { private Collection classes; public IocAnnotationLoader(String... packageNames) { List> annotations = new ArrayList>(1); annotations.add(Component.class); this.classes = finder(Arrays.asList(packageNames), annotations, true); } private Collection finder(List packageNames, List> annotations, boolean recursive) { Collection classes = CollectionKit.newArrayList(); for (String packageName : packageNames) { ClassReader classReader = DynamicContext.getClassReader(packageName); for (Class annotation : annotations) { classes.addAll(classReader.getClassByAnnotation(packageName, annotation, recursive)); } } return classes; } public IocAnnotationLoader(Collection classes) { this.classes = classes; } @Override public void load(SimpleIoc ioc) { for (ClassInfo classInfo : classes) { Class cls = classInfo.getClazz(); Component anno = cls.getAnnotation(Component.class); if (anno != null) { String name = anno.value().equals("") ? cls.getName() : anno.value(); ioc.addBean(name, cls, true); } } // free classes = null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy