1, Spring 的核心,在于自动装配, 从配置文件中实例化对象,不用写new。
     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;