1.为了代码的灵活性,我们一般采用面向接口编程,使用接口定义变量。
2.使用XXXServer 对XXX进行统一的操作,XXXServer 调用 XXX 的 XXXDAOImpl方法进行数据库的操作,实现对数据操作的封装。 XXXDAOImpl 实现了 XXXDAO 接口。
当 有多个 XXXServer 时,采用更大的 工厂类 或者 配置文件进行 统一管理。
3.测试时,建立 相应的 test 文件夹。
4.Spring 配置文件中在读 bean 的时候是用的反射机制的jvm的.class文件(采用classLoader)在调用类的方法。
5.什么是I o C ? (DI 依赖注入)
把要自己new的东西改为由容器来提供(初始化具体值,装配)
6.依赖注入的两种方式:setter注入、构造器注入
7.在bean中其实name属性和id属性是一样的。
8.Bean 中基本数据类型的注入,直接使用value=""或使用<property>的自标签<value>,这一般在配置数据库连接,写套接字时会用到。
9.Bean的范围:scope属性
常用的就singleton和prototype(原型)。
默认情况下,是singleton,拿到的都是同一个对象。如果设为prototype,则会新建一个bean对象。
谈及prototype作用域的bean时,在某些方面你可以将Spring容器的角色看作是Javanew操作符的替代者。
10.集合collection:
通过<list/>、<set/>、<map/>及<props/>元素可以定义和设置与JavaCollection类型对应List、Set、Map及Properties的值。
11.自动装配:autowire
常用的有byName 和byType:byName根据bean的name属性值去自动匹配bean,而byType会依据bean的数据类型去匹配,
当有两个或两个以上类型相同的bean的时候就会报错,所以要小心使用。
12.bean的生命周期:
ApplicationContext实现的默认行为就是在启动时将所有singleton bean提前进行实例化。
lazy-init="true" 延迟初始化bean。
init-method="init"destroy-method="destroy" 不要与 scope="prototype"一起使用,Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。