这是Spring bean的来源。
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
@AliasFor("name")
String[] value() default {};
@AliasFor("value")
String[] name() default {};
Autowire autowire() default Autowire.NO;
String initMethod() default "";
String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;
我注意到String[] value() default {};
。这意味着我们必须使用String Array。但我使用下面的代码,在那里传递一个字符串,它仍然有效,请告诉我原因。
@Bean("user")
public UserBean get() {
return new UserBean();
}
答案 0 :(得分:2)
在数组中,您可以输入0或多个值,这取决于您。这只是意味着您可以为您的bean提供0个或多个别名。
@Bean(value={"user","otherUser","..."})
public UserBean get() {
return new UserBean();
}
修改强>
为什么"user"
被接受,即使它不是数组?
因此,在Java中,您可以声明一个这样的String对象:
String value = "value1"; //this is a String
String user = "user"; // this is another String
String str = ""; //this is an empty string
请注意,它们是使用""
定义的,因此"user"
是一个字符串。
现在在这种情况下,有一个String数组,这意味着我们有一个对象是String的容器。
String[] values=new String[]{};//this is an array of String, an object where we can put many Strings.
由于"user"
是一个String,你可以将它放在数组values
中,如下所示:
values[0]="user";
当你宣布你这样的bean时:
@Bean("user")
public UserBean get() {
return new UserBean();
}
实际上,您将String "user"
放在方法返回的字符串数组中:
String[] value() default {};
为什么"user"
被接受,因为它只是一个字符串
答案 1 :(得分:0)
这与Java中主要方法的概念相同。
echo sqlplus usr/pwd@wind < C:\temp\test.sql
你可以调用你的main方法不传递任何参数,一个,两个或你想要多少。