bean配置

105 阅读3分钟

bean基础入门


学习内容:

  • bean基础配置
  • bean别名配置
  • bean作用范围配置

区别:springbean与javabean

传统的java应用中,javabean遵循一些规范,规范如下:
1、这个类必须具有一个公共的(public)无参构造函数;
2、所有属性私有化(private);
3、私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一定的命名规范。
4、这个类应是可序列化的。(比如可以实现Serializable 接口,用于实现bean的持久性)

Spring容器对Bean没有特殊要求,不像javaBean一样遵循一些规范(不过对于通过设置方法注入的Bean,一定要提供setter方法)

用处:

传统javaBean更多地作为值传递参数,
而Spring中的bean用处几乎无处不在,任何组件都可以被称其bean。

项目结构(铺垫)

其中service代码

applicationContext.xml配置:

启动文件:

基础配置

就是之前那个

起别名

配置 applicationContext.xml

添加name属性 可以指点多个别名(, 或者 ; 分隔即可)

bean作用范围配置

一些细节

spring默认为我们造的bean单例

为了造 非单例的bean ,需要配置applicationContext.xml

为bean添加 scope属性为prototype

为何要默认单例,若不是单例,用一个造一个,之间爆了

造一个可以重复用的有

  • 表现层对象

  • 业务层对象

  • 数据层对象

  • 工具对象

bean实例化

实例化创建bean的三种方式

bean本质上是对象,创建bean使用构造方法完成

bean实例化(构造方法)

项目结构概览:

BookDao.java

它的实现类 BookDaoImpl.java:

IoC容器的配置文件:

最后,项目的入口文件 AppForInstanceBook.java

为我们的实现类写个构造方法,证明是否有利用构造方法造对象

并且,将构造方法私有化,不让外部调用

woc居然还是跑起来了

私有的还可以访问,证明spring内部用了反射

总结:spring造bean的时候,用了无参构造方法

Spring报错信息阅读:

显而易见的,spring报错时,信息量太大,根本没法看

直接拉到最后,先解决最后一个

最后一个解决不了再解决上一个

为什么呢,因为第一行是全部信息,越往下越精简

所以最后一行是最有价值的信息

bean实例化(静态工厂)


项目结构:

捣鼓了一个工厂 注意static

配置xml文件

跑起来

这就是早些年写代码的方式

对象不主动new,通过工厂送过来

bean实例化(实例工厂与FatoryBean)

非静态的,工厂

配置xml

先造工厂,再造bean

因为非静态,所以得整个实例化对象出来

纯粹为了造bean,没必要写那些啥工厂,太麻烦

改造,最好的工厂(后期学整合时,大量使用)

工厂实现类,加上泛型,确定生产的bean

这样配置xml就方便了

运行:

默认还是单例的

想修改其为非单例,可以

添加isSingleton() return true

bean生命周期

bean生命周期:bean从创建到销毁的整体过程

联想vue生命周期,反正就是到哪个阶段,触发你的代码

写在 bean的实现类 BookDaoImple.java

配置xml,方可成功

要想手动触发destory,可以代码手动关闭Ioc容器

也可以设置关闭钩子

这样在关闭虚拟机的时候(关闭程序),就会被触发

当然,这些都不需要我们关心

要想免配xml,可以按规则写代码

下文补充