看源代码设置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;
}