NutzCN Logo
问答 nutz如何实现IocBean的默认值?
发布于 131天前 作者 qq_4f7a40b4 115 次浏览 复制 上一个帖子 下一个帖子
标签:

看源代码设置IocBean 默认值为"",那么是利用什么原理实现给引用IocBean的类不传参数就能默认首字母小写?

/**
 * 
 * @author wendal(wendal1985@gmail.com)
 * 
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface IocBean {

    /**
     * 指定一个名字, 默认为取类名的首字母小写, 如 STing,会设置为sTing
     */
    String name() default "";

    /**
     * 每个单一的值,规则与 org.nutz.ioc.loader.annotation.Inject一致
     * <p/>
     * 这些值,对应构造方法的参数
     * 
     * @see org.nutz.ioc.meta.IocValue
     * @see org.nutz.ioc.loader.annotation.Inject
     */
    String[] args() default {};

//    /**
//     * args 的别名, 不赞成使用,请使用 args 来代替
//     */
//    @Deprecated
//    String[] param() default {};

    String scope() default "app";

    boolean singleton() default true;

    /**
     * 当对象被Ioc容器创建后调用的方法
     */
    String create() default "";

    /**
     * 当对象被移出Ioc容器时调用的方法
     */
    String depose() default "";

    /**
     * 当对象被调用者从Ioc容器调出时触发的方法
     */
    String fetch() default "";

    /**
     * 你要注入的字段属于超类. <b>{"dao:refer:dao"}<b/> 前者是属性名称,后者的@Inject的语法. 后面的refer可忽略
     * 
     * @return 需要注入的字段名
     */
    String[] fields() default {};
    
    String factory() default "";

//    /**
//     * fields 的别名
//     */
//    @Deprecated
//    String[] field() default {};

    // /**
    // * 还没设计,是否真的需要呢?
    // */
    // @Deprecated
    // boolean auto() default false;
}
2 回复

注解只是一种配置信息,真正的逻辑是读取注解的代码去实现

AnnotationIocLoader会读取@IocBean注解

来自炫酷的 NutzCN

通过反射获取的类名

来自炫酷的 NutzCN

添加回复
请先登陆
回到顶部