Spring Bean的主要配置
BeanName
Bean Id在bean容器中是BeanName 获取bean也是通过BeanName 也可以通过设置name别名来获取Bean对象(在Application内部以map形式存在)没有配置ID与Name 默认为class名称, 没有配置Id有Name则为Name名称
Bean的范围配置(scope)
默认是单例模式, 大家公共一个Bean对象,原型模式谁用谁去创建
Bean的延迟加载(Lazy-init)
Bean的初始化方法和销毁方法(init - method 和 destory - method)
init 在创建完成后就去调用改设置的方法, destory 在销毁时去调用该设置的方法
手动关闭才能执行到销毁方法
在构造函数之后再init之前执行
实例化Bean
默认创建Bean的实例执行的是无参构造函数
创建执行有参构造函数加上这个配置 name参数名称, value 参数值
多个参数加多个以上配置 一个配置写一个变量名称以及值
传的是bean value改成 ref
静态工厂创建Bean实例
先写一个类 类中写想创建bean对象的静态方法
配置xml文件配置该类, 用factory-bean配置静态方法名称, 用getBean获取时则是获取到静态方法中的bean对象
优点:可以在静态方法中加入创建前的其他逻辑代码操作。
实例工厂方法创建bean对象
先写一个类 类中写想创建bean对象的方法(同上代码去掉static)
配置xml文件 在get获取时同时会把工厂对象创建出来
有参数的静态与非静态工厂方法
同样在配置中加上 constructor-arg 的Name 以及 value
实现FactoryBean接口 规范延迟Bean的实例创建
public class MyBeanFactory1 implements FactoryBean<UserDao> {
@Override
public UserDao getObject() throws Exception {
return new UserDaoImpl();
}
@Override
public Class<?> getObjectType() {
return UserDao.class;
}
}
正常配置xml即可 (加载配置文件是只是创建了MyBeanFactory的实例 getBean时才获取到类中的Bean对象)
bean依赖注入配置
注入List
对象List用ref引入
也可以是对象 key-ref value-ref
properties类型
自动装配
自动装配有两种方法 一种ByName 一种ByType
byName
被注入id要与类中函数名一致
byType
byType下被注入的bean只能有唯一的配置, 不能配置多个, 函数名可与id不一致
命名标签
默认标签
beans标签
在beans标签中还能嵌套多个beans环境
默认加载的是主beans中的配置, 要使用其他beans的配置可以指定配置环境 test写beans的名称
import标签
通过import去引入其他配置文件中的配置
一般是把模块的配置文件全部引入到主配置文件中 classpath: 后面写引入配置文件的名称
引入第三方命名空间
找到该命名空间的下的以上一套链接, xsi为自定义名称
第二种方法要求bean的配置文件唯一
配置非自定义类的第三方类交给spring管理
1.在maven中导入地址
2.知道要用的类名, 复制出该类的地址
3.在bean中配置该类
例:
bean的实例化基本流程