美文网首页
spring--基于ioc的配置文件方式

spring--基于ioc的配置文件方式

作者: 全满 | 来源:发表于2018-06-26 13:48 被阅读0次

    概念

    1. Spring是一个开源的轻量级框架
    2. spring核心主要有两部分
      (1.)aop:面向切面编程,扩展功能不是修改源代码实现
      (2.)ioc:控制反转,比如有一个类,在类里面有方法(不是静态方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象
      ioc是把对象的创建不是通过new方式实现,而是交给spring配置创建类对象
    3. spring是一个一站式的轻量级框架
      (1.)spring在javaee三层结构中,每一层都提供不同的解决技术
      ----web层:springMVC
      ----service:spring的ioc
      ----dao层:spring的jdbcTemplate

    ioc(控制反转)的操作

    • 把对象的创建直接交给spring进行管理
    • ioc的操作有两部分
      • 基于ioc的配置文件方式
      • 基于ioc的注解方式
    • ioc的底层原理

    ioc底层原理使用技术
    (1.)xml配置文件
    (2.)dom4j解析xml
    (3.)工厂设计模式
    (4.)反射


    image.png

    ioc操作步骤

    • 第一步 导入jar包
    • 创建类,在类里面创建方法
    • 创建spring配置文件,配置创建类
      • spring核心位置和文件名不是固定的,建议写在src目录下,文件名为ApplicationContext.xml
      • 引入schema约束
      • 创建 配置对象
    • 写测试
    /*
    分两步:
    1.加载spring配置文件,根据配置文件创建对象
    */
    ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
    //第二步:得到配置创建对象
    /*
    例如:User user = context.getBean("user");
    */
    

    属性注入

    创建对象的时候,向类里面属性里面设置值
    属性注入方式:(Java方式)
    1.有参数的构造函数
    2.set方法
    3.使用接口注入

    //接口注入
    public interface Dao{
      public void delete(String name);
    }
    public class DaoImpl implements Dao{
      private String name;
      public void delete(String name){
        this.name = name;
      }
    }
    

    在sping中支持前两种方式(set、有参构造)

    <!-- 使用有参构造注入属性 -->
    <bean id = "demo" class = "cn.persistXL.property.Demo">
      <!-- 使用有参构造注入 -->
      <constructor-arg name = "username" value = "小王小马"></constructor-arg>
    </bean>
    
    <!-- 使用set注入属性 -->
    <bean id = "book" class = "cn.persistXL.property.book">
      <!-- 使用set注入  name属性值:类里面定义的属性名称 value:具体的值 -->
      <property name = "bookname" value = "java基础"></property>
    </bean>
    

    注入对象类型属性(重点)

    • 创建service类和dao类
      • 在service得到dao对象(new)
    • 具体实现过程
      • 在service里面把dao作为类型属性private UserDao userDao;
      • 生成dao类型set属性的方法public void setUserDao(UserDO UserDO){this.userDao = userDao}
      • 注入类型的对象属性
    <!-- 注入对象类型属性 -->
    <!-- 1.配置service和dao对象 -->
    <bean id = "userDao" class ="cn.persistXL.ioc.UserDao" ></bean>
    <bean id = "userService" class ="cn.persistXL.ioc.UserService" >
      <!-- 注入dao对象
                name属性:service类里面属性名称
                      现在不要写value属性,因为刚才是字符串,现在是对象,
                写ref属性: dao配置属性bean标签中的id值
       -->
       <property name = "userDao" ref = "userDao"></property>
    </bean>
    

    IOC和DI的区别

    IOC:
    控制反转,把对象创建交给spring进行配置
    DI:
    依赖注入,创建对象中向类里面的属性中设置值
    关系:
    依赖注入不能单独存在,需要对象创建的基础上存在(在ioc基础上完成操作)

    spring整合web项目原理

    加载spring核心配置文件
    ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
    new对象,功能可以实现,效率很低
    实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
    实现原理:
    1.servletContext对象
    2.监听器
    3.具体使用
    1).在服务器启动时候,为每个项目创建一个servletContext对象
    2).在ServletContext对象创建的时候,使用监听器可以监听到具体的ServlectContext对象在什么时候创建
    3).使用监听器监听到ServletContext对象创建时候
    (1).加载spring文件,把配置文件的配置对象创建
    (2).把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
    4).获取对象的时候,到ServletContext域对象得到(getAttribute方法)

    相关文章

      网友评论

          本文标题:spring--基于ioc的配置文件方式

          本文链接:https://www.haomeiwen.com/subject/rfrzeftx.html