zoukankan      html  css  js  c++  java
  • 简单点学spring源码-目录

    缘起

    之所以写这个博客呢,一是自己做备忘用的学习总结;其次呢,就是spring越来越复杂,各种功能越来越多,各种复杂兼容适配的源码看的人眼花撩乱,云里雾里,深入而不能浅出。
    本人在这里呢,就删繁就简,带领大家学习一番,保证大家能花费最少的精力,学习到最有用的干货。

    具体代码github在这里

    最后,我叫破石,希望大家能记住我哦。

    1. bean包

    bean是spring的基础,被称 面向bean编程,在spring框架的各个领域被广泛使用,值得我们优先来学习。

    bean是什么呢?
    bean就是一个简单的java类,有一个默认的构造函数,还遵循一个命名规则(名字叫prop的属性会有一个setter setProp 和 一个 getter getProp)

    jdk中也有一个bean包的,而且功能非常强大,像大名鼎鼎的PropertyEditor,VetoableChangeListener等都是由jdk直接提供的。
    说白了,spring也只是在此基础上又增加了一些方法,对其进行了一定的补充与封装,方便spring的使用。比如新增了PropertySource概念,补充了BeanWrapper概念。

    建议大家在学习spring的bean前先学习一下jdk中的bean包,毕竟后者是基础。

    本章例子中会使用到的类和接口代码(主人,宠物,宠物种类)
     ISpecies 种类
    public interface ISpecies {
      String getName();
      void setName(String name);
    }
    
    宠物接口
    public interface IPet {
      void setName(String name);
      String getName();
      int getAge();
      void setAge(int age);
      void setSpecies(ISpecies sp);
      ISpecies getSpecies();
    }
    
    主人接口
    
    public interface IOwner {
      void setName(String name);
      String getName();
      void setPets(List pets);
      List getPets();
    }
    
    宠物种类具体类
    public class Species implements ISpecies {
      public Species() {
      }
      public Species(String name) {
    this.name = name; }
      public String getName() {
        return name;
      }
      public void setName(String name) {
    this.name = name; }
      private String name;
      }
    宠物具体类
    public class Pet implements IPet {
      public Pet() {
      }
      public Pet(String name, int age, ISpecies sp) {
    this.name = name; this.age = age; species = sp;
    }
    public void setName(String name) {
    this.name = name; }
    public String getName() {
      return name;
    }
    public int getAge() {
    return age; }
    public void setAge(int age) {
    this.age = age; }
      public void setSpecies(ISpecies sp) {
        species = sp;
      }
      public ISpecies getSpecies() {
        return species;
      }
      private String name;
      private int age;
      private ISpecies species;
    }
    主人具体类
    public class Owner implements IOwner {
      public Owner() {
      }
      public Owner(String name, List pets) {
    this.name = name;
        setPets(pets);
      }
    public void setName(String name) { this.name = name;
      }
      public String getName() {
        return name;
      }
    public void setPets(List pets) { this.pets.clear(); this.pets.addAll(pets);
      }
      public List getPets() {
        return pets;
      }
      private String name;
      private ArrayList pets = new ArrayList();
    }
    

    1.1 bean 包

    包结构
    |com
    |----demo
    |--------spring
    |------------beans
    |----------------factory
    |----------------propertyeditors
    |----------------support

    1.2 bean factory包

    1.3 bean propertyeditors包

  • 相关阅读:
    仿百度翻页(转)
    文字顺时针旋转90度(纵向)&古诗词排版
    微信小程序使用canvas绘制图片的注意事项
    PHP即时实时输出内容
    使用Android Studio遇到的问题
    RuntimeError: Model class users.models.UserProfile doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
    drf中的各种view,viewset
    代码审计:covercms 1.6
    windows下安装phpredis扩展
    python练习:异常
  • 原文地址:https://www.cnblogs.com/po-shi/p/11655871.html
Copyright © 2011-2022 走看看