package org.nutz.ioc; /** * Ioc 容器接口 * * @author zozoh(zozohtnt@gmail.com) */ public interface Ioc { /** * 从容器中获取一个对象。同时会触发对象的 fetch 事件。如果第一次构建对象 则会先触发对象 create 事件 * * @param <T> * @param type * 对象的类型,如果为 null,在对象的注入配置中,比如声明对象的类型 <br> * 如果不为null对象注入配置的类型优先 * @param name * 对象的名称 * @return 对象本身 */ <T> T get(Class<T> type, String name) throws IocException; /** * 从容器中获取一个对象。这个对象的名称会根据传入的类型按如下规则决定 * * <ul> * <li>如果定义了注解 '@InjectName',采用其值为注入名 * <li>否则采用类型 simpleName 的首字母小写形式作为注入名 * </ul> * * @param <T> * @param type * 类型 * @return 对象本身 * @throws IocException */ <T> T get(Class<T> type) throws IocException; /** * @param name * 对象名 * @return 是否存在某一特定对象 */ boolean has(String name) throws IocException; /** * @return 所有在容器中定义了的对象名称列表。 */ String[] getNames(); /** * 将容器恢复成初始创建状态,所有的缓存都将被清空 */ void reset(); /** * 将容器注销,触发对象的 depose 事件 */ void depose(); }