目录
第一个Spring项目创建
- 首先创建一个Maven项目,用来导入jar包
通过pom.xml配置文件导入spring-context包:
同时配置编码格式:(主要作用是防止编码格式错误导致的程序运行错误,记得每一次编写前都这么做,加深以下印象)
<properties>
<!--编译编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
注意:在导包完成后记得刷新maven项目,在IDEA右边有一个Maven栏
点左边的刷新,这样才算真正的把jar包导入到了你的项目里面
- 编写java代码
先定义一个接口,编写一个抽象方法
再用一个类去实现这个接口
我们想要创建这个实现类的对象,并且调用它的方法。
创建一个Spring配置文件
通过这个配置文件,我们就可以与实现类(HuangSpring)关联
全限定名绑定唯一的id标识。
再编写测试代码:
可以看出,通过getBean()方法可以创建并获得实现类的对象。
运行查看结果:
没有问题,对象成功创建了,实现类中的方法也被调用了。
Spring配置文件
Bean标签的基本属性配置
用于配置对象交由Spring来创建,默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。
- id:Bean实例再Spring容器中的唯一标识
- class:Bean的全限定名称
如:<bean id = "huangSpring" class="com.huang.demo.HuangSpring"/>
Bean标签的范围配置
scope:指对象的作用范围
- singleton(单一的):标签默认scope属性就是singleton
代码显示的是从Spring中获取两次,看其是否创建了两个对象
可以看出,Spring容器中只存在一个对象,Bean标签的scope属性若配置为singleton,则表明对象是唯一的,同一个id标识无论调用多少次getBean方法,都只创建了一个对象。
Bean的实例化时机,当Spring核心文件被加载时,实例化配置的Bean实例(相当于静态)
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象就一直存在
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
- prototype(多例的):多个对象
把scope属性改为prototype:
测试代码不变,查看结果
可以看出,创建了两个不同的对象。
Bean的实例化时机:当调用getBean()方法 时实例化Bean
生命周期:
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直存在
对象销毁:当对象长时间不用时,被java的垃圾回收器回收
- request
- session
- global session
- 生命周期
Bean标签中有init-method属性,用于设置初始化方法。
destory-method属性,用于设置销毁方法。
- Bean实例化的三种方式
- 无参构造方法实例化(上面的所有例子都是无参构造方法实例化)
- 工厂静态方法实例化(static ……)
- 工厂实例方法实例化(return new 类型;)
依赖注入(Spring配置文件内容)有人想了解可以评论以下
- Bean的依赖注入概念
依赖注入(Dependency Injection):它时Spring框架的核心IoC的具体实现
- 依赖注入方式
- 有参构造方法
- set方法
- 标签 :属性注入(很麻烦)
引入其他配置文件(分模块开发)
import标签,将各个配置文件相连,只需要在主配置文件中使用import标签:
这样在主配置文件加载时,其他配置文件一并加载。