项目编程思想,Spring 框架的构成,IOC:

项目编程思想:
项目功能的开发思路 —以注册为准 MVC

  1. 根据需求文档 建立对应的表 xdl_user
  2. 根据表建立对应的实体类 XdlUser
  3. 定义一个DAO接口
  4. 利用jdbc的工具类结合JDBC访问数据库的五步完成功能
  5. 加一个工厂类 提供DAO的实现类 接触Service和DAO的耦合度
  6. 编写一个业务类 XdlUserService 注册 —测试 —-M
  7. 观察 register.jsp 让其发出register.do —-V
  8. 编写一个Servlet 充当控制器 接收页面请求参数
  9. 利用M层完成注册,根据注册结果做数据设置和页面跳转
  10. 利用上面的思想 设计快件列表的显示

利用上面的思想 设计快件列表的显示

  1. 建立快件对应的表
  2. 根据表建立对应的实体类
  3. 编写DAO 接口
  4. 编写DAO 的实现类
  5. 编写DAO 工厂类
  6. 编写Service 类 包装一个业务方法 可以提供快件列表的数据 —测试 M
  7. 编写控制器类 使用M层获取快件列表 放入request中 转发到快递列表对应的jsp —C
  8. 使用jstl + el 在jsp中展示快件列表 —V

  9. 建立快件对应的表

  10. 根据表建立对应的实体类
  11. 编写DAO 接口
  12. 编写DAO 的实现类
  13. 编写DAO 工厂类
  14. 编写Service 类 包装一个业务方法 可以提供快件列表的数据 —测试 M
  15. 编写一个控制器 使用M层获取快件列表 使用第三方jar包 把列表转成JSON字符串 写给浏览器
  16. jsp 中发送ajax请求 把返回的数据 使用js 显示到页面中

Spring 框架的构成:

  1. IOC 控制反转模块 这是Spring框架的核心
  2. DAO 数据访问模块 Spring框架对jdbc访问数据库做了简化和封装
  3. WebMVC Spring 对web部分以及MVC框架的支持
  4. AOP 面向切面编程 在面对对象的基础上做了扩展
  5. ORM Mybatis 以面向对象的思想来操作数据库
  6. JEE Spring 对远程调用消息服务 邮件服务等的支持

什么是IOC:

Inversion Of Control 控制反转
程序中一个组件 用到另外一个组件时 由原来的new的方式 变成了由容器来进行 组件的创建 管理 和维护组件关系
这样做的好处是 可以大大降低组件之间的耦合度

Spring容器:

在Spring中,任何Java类都被当成Bean组件通过容器管理和使用
Spring容器实现了IOC和AOP机制
Spring容器有ApplicationContext和BeanFactory两种类型

Spring 容器的使用步骤:
—使用容器获取日期类型的对象

  1. 建立一个项目 导入jar包(ioc) 拷贝Spring 容器对象的配置文件到src下
  2. 在spring容器配置文件中 写对象对应的配置
    <bean id="对象的引用名" class="包名.类名"></bean>
    
  3. 创建Spring 容器对象 和从容器中获取对象
    ApplicationContext app = new ClassPathXmlApplicationContext("配置文件名");
    app.getBean("对象的引用名",类型.class);
    

Spring 容器创建对象的三种方式:

  1. 构造器方式实例化

    <bean id="对象引用名" class="包名.类名">
    

    默认调用类型对应的无参构造

    Date date = new Date();
    
  2. 静态工厂方法实例化
    使用类型 调用对应的静态方法来获取对象

    <bean id="对象引用名" class="包名.工厂类名" factory-method="静态方法名"></bean>
    
  3. 实例工厂方法实例化
    本质上这种方式是使用一个已经存在的对象 创建出另一个类型的对象

    <bean id="对象引用名" (可不写)class="包名.目标类名" factory-method="成员方法名" factory-bean="工厂对象的id"></bean>
    

Spring 容器中Bean 对象的作用域:
Spring容器中 默认一个对象的作用域是单例的 可以再spring 配置文件中通过bean标记的
scope 属性来指定对象的作用域 取值有 singleton 或者 prototype 其他的 如 request
session 等到web部分才涉及

bean 对象的初始化和销毁:

  1. 对象的初始化:

bean 对象创建完成后 可以通过beans标记中的 default-init-method 属性指定初始化方法 , 由于这样会影响到spring容器中配置的所有对象 这样影响的范围比较大 所以对象对应的类型中国没有对应的初始化方法也不会报错.
也可以在bean标记中通过 init-method 来指定初始化方法 这样只影响到一个具体的对象 所以控制的比较精准 当这个对象对应的类型中没有对应的初始化方法时,程序会报错.

  1. 对象的销毁:

bean 对象即将消亡 可以通过beans标记中的 default-destroy-method 属性指定销毁方法 由于这样会影响到spring容器中配置的所有对象, 这样影响的范围比较大 所以对象对应的类型中没有对应的销毁方法也不会报错.
也可以在bean标记中通过 destroy-method 来指定销毁方法 这样只影响到一个具体的对象 所以控制的比较精准 当这个对象对应的类型中没有对应的销毁方法时 程序会报错.
销毁方法只针对单例模式的对象.