1. 注解Annotation
    1. 对属性的注解
    2. 对方法的注解
    3. 注解的使用步骤
      1. 定义注解:
        1. @Retention(Retention.RUNTIME)
        2. @Target(ElementType.FEILD)
        3. public @interface 注解名{}
          1. String name() default "";
          2. 在注解大括号中的
        4. 需要说明的问题?
          1. 注解的生命周期
          2. 注解的位置
      2. 子主题 2
    4. 按照位置分或者说 按位置分
  2. 初始化容器
    1. 初始化Spring容器的方式
      1. 推荐:ApplicationContext ctx=new ClasspathXMLApplicationContext("");
      2. ApplicationContext ctx=new FileSystemXMLApplicationContext("");
    2. 子主题 2
  3. 基本的依赖注入
    1. <bean id="" name="" scope="default|prototype" lazy-init="true|false" init-method="初始化的方法名" destroy-method="销毁的方法名 " class="" factory-method="" factory-bean=""> <property name="属性名" ref="引用的对象"/>--引用方式的注入 <property name="属性名"><bean class=""/></property>--单独的注入 <property name="" value=""></bean>--基本数据类型的注入 <property name="">--集合的注入 <set><value></value><value></value>...</set> <list><value></value><value></value>...</list> <map> <entry > <key></key><value></value> </entry>... </map> </property> <property name=""> <props> <prop key="">值</prop> ...<props> </property> <!--直接使用构造方法注入:--> <constructor-arg index="0" type="参数的类型" value|ref=""/>--基本数据类型不需要type="" </bean>
      1. 实例化 bean的方式
      2. bean的作用范围
      3. id与name的区别
      4. 懒加载
      5. 初始化和销毁的方法
    2. 手工装配方式
    3. 自动装配方式
      1. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:context="http://www.springframework.org/schema/context" xmlSchemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bean-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">...
      2. <context:annotation-config/>--开启注解
      3. 添加jar: aspectjweaver.jar aspectjrt.jar
      4. 添加注解
        1. @Autowired(required=true|false)-- 按类型
          1. 按类型进行注入 如果将required=false(默认为true) 则注入不成功将设为null
          2. 可结合@Qulifier("配置文件中bean的名字")
        2. @Resource(name="spring中的bean名称")--按名称
          1. 首先根据name指定的属性在springContext中查找 如果找不到则为空
          2. 如果没有指定name的名称,则根据JaveBean类中的属性名字在spring context中进行查找, 如果找不到,则再按照 JavaBean类中属性的类型进行查找
        3. 注解的添加位置:也可以是setter上
    4. 可在<bean autowired="byType|byName">
  4. AOP
    1. 问题的引出: 已经编写好PersonService, 现在要求具有权限的用户 才可以使用Service提供的服务(方法)
      1. 不使用AOP解决办法,直接在原有的方法上进行侵入式的逻辑处理
      2. 使用JDK提供的代理,将建代理工厂
        1. 创建代理实例
        2. 定义代理实例方法
        3. 使用的是 代理对象调用方法而不是原有对象
        4. 目标对象必须实现接口,且要代理的方法必须在接口中
        5. 使用JDK的Proxy机制的步骤
      3. 通过CGLib创建代理
      4. 解决思路
    2. AOP相关概念
      1. 通知Advice
        1. 前置通知
        2. 后置通知
        3. 例外通知
        4. 最终通知
        5. 环绕通知
        6. 通知的类型
      2. 切面
        1. 侧面,一方面,关注的问题
      3. 连接点
        1. 可以进行拦截的点--被拦截的方法,在哪下刀
      4. 切入点
        1. 如何进行拦截的代码或方法,如何下刀
      5. 目标对象
        1. 被代理的对象,被下刀的对象
      6. 织入
        1. 应用AOP的过程
      7. 引入
        1. 动态添加方法的过程
    3. Spring中AOP的应用
      1. 子主题 1
    4. 子主题 4