Spring(大容器 大总管———偏向于管理的)
    管理的是对象
    1.创建 IOC控制反转 原生(每次一个新的) 单例
    2.注入 DI依赖注入
    3.AOP 哪些目标对象 哪些不是目标对象(切面对象) 代理
    动态代理+责任链模式

    MVC分层
    (JQ VUE) V:View JSP HTML+AJAX+JSON

    SpringMVC C:Controller Filter—-Servlet
    (请求/响应)

    M:Model Service Java业务逻辑
    MyBatis DAO Java数据持久化 读/写JDBC
    (ORM)

    =======================================================================

    1.下载 spring.io GitHub
    2.简单了解一下Spring下载以后的样子
    找到 核心的jar包(21个) 核心手册index.html
    3.上来就用
    将jar导入项目中
    进行对象的管理 对象-Bean JavaBean
    4.创建一个核心文件
    我愿意叫ApplicationContext.xml
    内容参考手册

    5.获取一个BeanFactory对象
    new ClassPathXmlApplicationContext(“文件”)
    对象 = factory.getBean(“id”);
    6.从底层机制来讲
    每一个bean默认的效果是单一的(单例模式)
    立即加载?ok 延迟加载?

    就不想要单例的? 通过
    如果是单例 延迟?

    7.如果在未来会有很多层次的很多对象需要管理
    如下几种方式来分开(增强可读性)
    将不同的bean标签 放置在不同的配置文件中
    ApplicationContextDao.xml
    ApplicationContext_Service.xml
    ApplicationContext_Controller.xml
    方式一:
    new ClassPathXmlApplicationContext(“”,””,””);
    方式二:
    new ClassPathXmlApplicationContext(new String[]{“”,””,””});
    方式三:
    new ClassPathXmlApplicationContext(“ApplicationContext
    *.xml”);
    方式四:
    new ClassPathXmlApplicationContext(“ApplicationContext.xml”);
    在核心配置文件中引入其他文件

    ===================================================================


    梳理一下Spring框架的基本用法
    1.导包 core beans context expression
    commons-logging aop tx
    2.核心配置文件
    ApplicationContext.xml
    管理所有的bean对象
    规则——>专业的手册

    3.创建一个BeanFactory对象
    ClassPathXmlApplicationContext(“xml”)
    (造型)getBean(“id”);
    4.配置文件的问题
    将不同的bean对象分开在不同的配置文件中写
    ApplicationContextDao.xml
    ApplicationContext_Service.xml

    ClassPathXmlApplicationContext(“”,””,””)
    ClassPathXmlApplicationContext(new String[]{“”,””,””})
    ClassPathXmlApplicationContext(“ApplicationContext
    *.xml”);
    在核心文件中引入
    5.可以利用配置文件的标签
    给我们需要的对象做赋值 DI依赖注入
    利用属性对应的set方法进行赋值
    利用带参数的构造方法给属性赋值




    6.接着昨天的代码之后来研究
    对象中存在其他对象这样的形式



    手动:我们需要自己去配置bean 属性 关系
    7.如果Spring可以帮我们自动的将对象装配进去
    DI

    读取配置文件 (解析信息 class id)—-String
    反射
    根据class创建类
    根据类创建对象——默认立即加载 单例模式
    Map 3组
    根据配置文件中的关系反射分析每一个对象的属性
    给属性做赋值操作
    反射能获取到属性(类型 名字)
    通过属性类型——>刚才那个Map中有没有一个对象 一致的?
    通过属性名字——>刚才那个Map中有没有一个对象

    8.基于以上那些知识
    可以利用Spring帮我们管理对象
    所有的对象交给Spring管理都是
    可以利用自动装配的形式让Spring帮我们做对象之间的关系注入
    手动:自己写配置文件的关系
    自动:利用

    我们写了一个配置


    底层:
    读取配置文件 两个bean里面的所有信息 id class byType
    Class clazz = Class.forName(“controller”);
    Object controller = clazz.newInstance();//空参数的构造方法 new Controller();
    map.put(“controller”,controller);
    再来一次 将service放入
    map.put(“service”,service);

    分析Controller类中的属性
    Filed[] fields = clazz.getDeclaredFields();
    循环每一次得到一个属性
    Class filedType = field.getType();// Service
    String fieldName = field.getName();// service

    Object service = map.get(fieldName);//byName


    //set方法 构造方法
    fieldName首字母变大写 前面拼接set——>setService
    Method method = clazz.getMethod(“setService”);
    method.invoke(service);

    =================================================================
    综上
    可以利用Spring管理对象啦
    对象可以手动、自动的方式进行DI装配

    对象是[数组/集合] 不多见 录播课一节课详细讲啦

    分析基于注解的配置形式
    将原来xml中的信息放在注解里 导包
    注解需要放置在 交给Spring管理对象的类上面
    @Component(“”) 组件
    如果注解中不写”id” 默认—>类名字的驼峰式studentController
    @Controller
    @Service
    @Repository

    接下来看Spring录播课
    次重点:SpEL
    重点:AOP
    重点:Annotation后2节