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