Spring容器中bean的id或name,都可以有多个,且第一个为标识符(Qualifier),其余皆为别名(Alias)。所以都可以通过applicationContext.getBean("id or name", Type.class)获取。
如果同时存在id和name,则name为别名!!!
Spring容器目前能对各种基本类型把配置的String参数转换为需要的类型。
注:Spring类型转换系统对于boolean类型进行了容错处理,除了可以使用“true/false”标准的Java值进行注入,还能使用“yes/no”、“on/off”、“1/0”来代表“真/假”,所以大家在学习或工作中遇到这种类似问题不要觉得是人家配置错了,而是Spring容错做的非常好。
// 测试类 public class BooleanTestBean { private boolean success; public void setSuccess(boolean success) { this.success = success; } public boolean isSuccess() { return success; } }
// 配置文件(chapter3/booleanInject.xml)片段: <!-- boolean参数值可以用on/off --> <bean id="bean2" class="cn.javass.spring.chapter3.bean.BooleanTestBean"> <property name="success" value="on"/> </bean> <!-- boolean参数值可以用yes/no --> <bean id="bean3" class="cn.javass.spring.chapter3.bean.BooleanTestBean"> <property name="success" value="yes"/> </bean> <!-- boolean参数值可以用1/0 --> <bean id="bean4" class="cn.javass.spring.chapter3.bean.BooleanTestBean"> <property name="success" value="1"/> </bean>
Spring通过<value>标签或value属性注入常量值,所有注入的数据都是字符串,那如何注入null值呢?
通过“null”值吗?当然不是因为如果注入“null”则认为是字符串。Spring通过<null/>标签注入null值。
即可以采用如下配置方式:
<bean class="..."> <property name="message"><null></property> ... </bean>
-------
使用<context:annotation-config/>标签来开启注解形式的依赖注入。
使用<context:component-scan/>标签来表示需要要自动注册Bean定义,而通过base-package属性指定扫描的类路径位置。
注意,<context:component-scan/>默认开启了annotation-config。
使用<aop:aspectj-autoproxy/>标签开启Spring对@AspectJ风格切面的支持。
@AspectJ风格的切面可以通过@Compenent注解标识其为Spring管理Bean,而@Aspect注解不能被Spring自动识别并注册为Bean,必须通过@Component注解来完成。
package cn.javass.spring.chapter12.aop; //省略import @Component @Aspect public class TestAspect { @Pointcut(value="execution(* *(..))") private void pointcut() {} @Before(value="pointcut()") public void before() { System.out.println("=======before"); } }
以上,源自张开涛的Spring教程。