Spring 可以拿着针管给你注入进来, IOC
<bean id="userService" class="com.bjsxt.service.UserService">
<property name="userDAO" bean="u"/>
== <property name="userDAO" ref="u"/> </bean>
2, (a), Spring_0300_IOC_Injection_Type
(b), setter(重要)
(c), 构造方法(可以忘记)
3, id vs. name
a), Spring_0400_IOC_Id_Name
b), name可以用特殊字符 <bean id/name="u" class="com.bjsxt.dao.impl.UserDAOImpl">
4, 简单属性的注入
a), Spring_0500_IOC_SimpleProperty
b), <property name=… value=….>
(因为是基础数据类型,其实我们自己写很少遇到这样的, 但Spring整合自己时,可以用到)
5, <bean 中的 scope 属性, 生命范围
a), Spring_0600_IOC_Bean_Scope
b), singleton 单例 (默认)
c), proptotype 每次创建新的对象
<bean id="userService" class="com.bjsxt.service.UserService" scope="prototype">
6, 集合注入
a), Spring_0700_IOC_Collections
b), 很少用,不重要!参考程序
7, 自动装配
a), Spring_0800_IOC_AutoWire
b), byName
c), byType
d), 如果所有的bean都用同一种,可以使用 beans 的属性:default-autowire
8, 生命周期
a), Spring_0900_IOC_Life_Cycle
b), lazy-init (不重要) 我感觉不错。用到再实例化,不直接全初始化
c), init-method destroy-methd 不要和 prototype 一起用(了解)
Annotation
9, Annotation第一步:
a), 修改xml文件,参考文档<context:annotation-config />
10, @Autowired
a), 默认按类型by type
b), 如果想用byName,使用@Qulifier
c), 写在private field(第三种注入形式)(不建议,破坏封装)
d), 如果写在set上,@qualifier需要写在参数上
11, @Resource(重要)
a), 加入:j2ee/common-annotations.jar
b), 默认按名称,名称找不到,按类型
c), 可以指定特定名称
d), 推荐使用
e), 不足:如果没有源码,就无法运用annotation,只能使用xml
12, @Component @Service @Controller @Repository
a), 初始化的名字默认为类名首字母小写
b), 可以指定初始化bean的名字
13, @Scope
14, @PostConstruct = init-method; @PreDestroy = destroy-method;