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

com.blade.ioc.Container Maven / Gradle / Ivy

There is a newer version: 1.7.2-beta
Show newest version
/**
 * Copyright (c) 2015, 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;

import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * IOC容器顶层接口
 *
 * @author	biezhi
 * @since	1.0
 */
public interface Container {

	/**
	 * 根据bean名称和对象作用于获取一个bean对象
	 * 
	 * @param name		bean名称,可以是类名
	 * @param scope		对象作用域,单例或者每次都创建
	 * @param  		泛型
	 * @return			一个bean对象
	 */
	 T getBean(String name, Scope scope);

    /**
     * 根据class和对象作用于获取一个bean对象
     * 
     * @param type		class类型
     * @param scope		对象作用域,单例或者每次都创建
     * @param  		泛型
     * @return			一个bean对象
     */
     T getBean(Class type, Scope scope);

    /**
     * @return 返回所有bean的名称集合
     */
    Set getBeanNames();
    
    /**
     * @param  		泛型
     * @return 返回所有bean的集合
     */
     Collection getBeans();
    
    /**
     * 根据注解获取ioc容器中匹配的bean class集合
     * 
     * @param annotation	annotation class类型
     * @return				返回符合annotation class类型的所有class
     */
    List> getClassesByAnnotation(Class annotation);
    
    /**
     * 根据注解获取ioc容器中匹配的bean对象集合
     * 
     * @param annotation	annotation class类型
     * @param  			泛型
     * @return				返回符合annotation class类型的所有bean
     */
     List getBeansByAnnotation(Class annotation);
    
    /**
     * 判断是否存在一个bean,根据class类型
     * 
     * @param clazz			类的class类型
     * @return				true:存在,false:不存在
     */
    boolean hasBean(Class clazz);

    /**
     * 判断是否存在一个bean,根据bena name
     * 
     * @param name			bean的名称,一般是class名称
     * @return				true:存在,false:不存在
     */
    boolean hasBean(String name);
    
    /**
     * 根据名称从ioc容器中移除一个bean对象
     * 
     * @param name			要移除的bean对象名称
     * @return				true:成功,false:失败
     */
    boolean removeBean(String name);
    
    /**
     * 根据名称从ioc容器中移除一个bean对象
     * 
     * @param clazz			要移除的bean class类型
     * @return				true:成功,false:失败
     */
    boolean removeBean(Class clazz);
    
    /**
     * @return	清空容器
     */
    boolean removeAll();
    
    /**
     * 获取annotations中的注解是否可以注册进入ioc容器
     * 
     * @param annotations	annotations要检测的annotation数组
     * @return				true:可以注册,false:不可以注册
     */
    boolean isRegister(Annotation[] annotations);

    /**
     * 注册一个代名称的Bean
     * @param name	bean名称
     * @param value	bean对象
     * @return		返回注册的Bean
     */
    Object registerBean(String name, Object value);
    
    /**
     * 注册一个对象到bean容器中
     * 
     * @param object		要注册的object
     * @return				返回注册后的Bean实例
     */
    Object registerBean(Object object);
    
    /**
     * 初始化IOC
     */
    void initWired();
    
    /**
     * 注入一个object
     * @param object	要注入的object
     */
    void injection(Object object);
    
    /**
     * @return 返回ioc容器中的所有bean对象的K,V
     */
    Map getBeanMap();
    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy