1.创建项目顺序:
project选择spring,download -> 确定包都add library了,没有就add ->创建配置文件 ->
->创建测试类(psv创建main函数或建一个函数前面@Text)
2.ClassPathXmlApplicationContext是获取类路径的配置文件,不在该项目下用FileSystem…
3.组件(类)在容器(ioc)创建好时就创建完成,创建调用的是set方法(property标签决定的),属性名(name)是set方法后面单词的小写。
4.一个bean相当于一个对象,id即为对象名
5.
用类名和id获取bean实例(不用强转)。
6.xml配置有参构造器时,几个参数几个constructor-arg标签;可以省略name配置,按照顺序即可。
7.如果有多个有参构造器的且参数数相同会有歧义
可以用type属性来解决
8.value属性内特殊字符输入(value子节点):
9.当对象含有另一个对象时,用ref属性引用已经注册过的目标bean对象的id即可(ref代替value)。
10.内部bean(只能在内部使用):
11.类列表:
12.map类型注入(还有key-ref):
13.p命名空间:
14.自动装配(autowire):
简单的属性不需要自动装配
byName:在配置文件(ioc)中寻找已经注入的,id值和类中变量名相同的组件注入。(对名字规范要求高,也有重名01情况)
byType:在ioc中寻找已经注册的,类型和目标类所需类型一致的注入(很明显有多个同属性时会报错)
15.bean的继承(parent)(注意重写覆盖):
16.抽象bean(abstract=“true”):无法实例化。
17.bean的依赖(depend -on):
必须依赖已经存在才能初始化。(可以用于控制bean的加载顺序,如果该bean A要用到bean B的数据,就依赖于B)
注意:依赖不会赋值,此处car=null
18.bean的作用域(scope):
默认是 singleton(getBean同一个id同一个对象,在ioc创建的时候就已经建好了)
prototype(原型)(getBean的时候再创建,每次返回新的实例)
19.引用外部配置文件(引入el表达式和context的命名空间),以数据库连接池为例子:
20.
bean生命周期顺序:构造器->赋值->初始化方法->使用对象->销毁
destroy实现要ioc.close
完整的生命周期:
21.静态工厂配置bean:
其中给getCar传参使用constructor-arg(可以给普通方法传参)
22.实例工厂配置bean:
区别:
1.实例工厂是先创建了一个工厂并实例化,然后通过bean对象调用工厂里的相应方法;而静态工厂在bean容器开启的时候同样创建了一个工厂只不过是直接在其内部完成了相应的方法调用
2.
静态工厂:用于生成实例对象,所有的方法必须是static
实例工厂:必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是“非静态”的。
23.Factorybean配置bean:
import org.springframework.beans.factory.FactoryBean;
public class text1 implements FactoryBean {
@Override
public Object getObject() throws Exception {
return null;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return true;
}
}
默认直接调用getObject返回对象