zoukankan      html  css  js  c++  java
  • Spring4

    Spring是位于业务逻辑层的一个框架, 它和前面的struts 、 Hibernate组成了SSH 组合 。 它里面包含两个核心, IOC  + AOP

    • 什么是IOC

    • IOC 的全称是 Inversion Of Control 翻译过来是控制反转的意思。

    • 什么是AOP

    • AOP为Aspect Oriented Programming的缩写,意为:面向切面编程

    • IOC 的全称是 Inversion Of Control 翻译过来是控制反转的意思。 通俗的话说: 就是把对象的创建工作交给spring来完成。
    • 以前创建对象:手动创建  new XXX();
      现在创建对象:都是由spring来创建(action  |service  | dao 这些类一般都交给spring来完成。)
      

      Spring入门

    • 导入jar包
    • 声明业务逻辑类
    • 在src下新建xml文件,导入约束
    • 在xml里面托管要让spring创建实例的类
    • 创建工厂,问工厂要实例对象。
    • 使用对象调用方法
    • spring入门详解

    • xml的解释
    • <!-- 使用bean标签来告诉spring,让它创建哪一个类的实例对象
              一般只会把三个层级的类给spring来创建  actionservicedao  扩展增强的类(AOP)
      id | name :表示的是唯一标识符。以后拿着这个值就能找到具体的类实例
              class : 托管了类的全路径 Class.forName();
              
              默认生成的实例是单例..只有一个实例。
              如果想做多个实例。
                  scope="prototype"
                  
              init-method:初始化对象的时候调用具体的方法
              
              destroy-method:销毁实例的时候调用具体的方法
              
                     单例情况下,会执行销毁方法。 多例则不会。
          
           -->
            <bean id="us" class="com.itheima.service.impl.UserServiceImpl"  scope="prototype"
                init-method="init" destroy-method="destroy"
            ></bean>
    • 代码的解释
    • //创建工厂 classpath: 类路径,其实就是src下的所有资源,在编译的时候,会搬到bin/classes/  
          //类加载器 
          //创建工厂,需要依赖xml文件。
          ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
          
          //问工厂要对象
          UserService userService = (UserService) context.getBean("us");
          userService.save();
          //关闭工厂,但是一般不会关闭。
          ((AbstractApplicationContext) context).close();
    • Spring IOC实例化方式

    • 无参构造方式(最简单的)【重点】

    • 要求托管的类,需要具备无参构造方法
    • public class UserServiceImpl implements UserService {
      @Override
              public void save() {
                  System.out.println("调用了UserServiceImpl的save方法~~!");
              }
          
          }
      
      xml:
       <bean id="us" class="com.itheima.service.impl.UserServiceImpl"></bean>
    • 静态工厂方法

    • public class StaticFactory {
      public static UserService getBean(){
                  System.out.println("执行了静态方法创建对象~~~");
                  return new UserServiceImpl();
              }
          }
      
      xml:
      
           <!-- 静态工厂方法: 拿着us 过来找spring的工厂,spring会去找StaticFactory,然后调用这个类中的getBean方法获取对象 -->
         <bean id="us" class="com.itheima.factory.StaticFactory" factory-method="getBean"></bean>
    • 实例工厂方法

    • 要求我们自己提供工厂,而且工厂要返回类的实例,工厂方法是非静态的。
    •     public class InstanceFactory {
          public  UserService getBean(){
                  System.out.println("执行了非静态方法创建对象~~!!!~");
                  return new UserServiceImpl();
              }
          }
      
      xml:
      
          <bean id="factory" class="com.itheima.factory.InstanceFactory"></bean>
         
         <!-- 当spring工厂拿到us的时候,会拿着Factory这个名称先去上面找到对应的bean,然后把class的实例给创建出来,进而调用工厂方法 -->
         <bean id="us" factory-bean="factory" factory-method="getBean"></bean>

      不管是静态工厂还是实例工厂,都没有解决掉核心问题。 具体类的实例其实还是由程序员来创建,spring的工厂只不过是做了一个跳转作用而已。所以这两种方式不推荐使用。

  • 相关阅读:
    Java的运行机制
    java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码
    学习Java必须避开的十大致命雷区,千万不要踩!
    教你从零开始学习java正则表达式!
    java小项目之:扫雷,这游戏没有你想的那么简单!
    CentOS 旧版下载地址
    yum相关变量浅析
    在 CentOS 中部署 KMS 服务器(vlmcsd)
    CentOS 6.x 重置root 密码
    1-VCP 框架
  • 原文地址:https://www.cnblogs.com/appc/p/7978706.html
Copyright © 2011-2022 走看看