Spring系列之 配置文件的操作
写在文章前面:
本文带大家掌握Spring配置文件的基础操作以及带领大家理清依赖注入的概念,本文涉及内容广泛,如果各位读者耐心看完,应该会对自身有一个提升
Spring配置文件的作用
Spring配置文件是用于Spring工厂进行Bean生产,依赖关系注入,Bean实例分发的图纸,他类似于人类的大脑,我们必须掌握这张图纸的使用方法,才能进行相关的操作,灵活运用这张图纸准确的表达自己的意图。运筹帷幄,决胜千里。Spring的配置文件是一个或多个标准的xml文档,applicationContext.xml文件是默认的配置文件,当容器启动找不到配置文件时,就会尝试加载这个配置文件。
未使用Spring前程序的开发步骤
这里以配置一个User类为例,UserImp为接口,User为其实现类,我们本来使用一个 UserImp接口去接收一个User的实现对象,本来是通过以下代码:
UserImp user=new User()
流程图:
使用上述方法的缺点:代码的耦合度过高
使用Spring框架操作
这里以配置一个User类为例,UserImp为接口,User为其实现类,我们使用一个 UserImp接口去接受一个User的实现对象,代码如下:
UserDao user=Spring客户端.getBean(id标识符)
那么其内部的原理是怎么样的呢?要实现解耦,基本上都是使用配置文的方式,Spring自然也不例外,下面通过一张流程图解来带领大家更好的领会
流程图解:
Spring入门实现步骤
1.在pom.xml中导入Spring框架的坐标
2.创建Bean
3.创建applicationContext.xml
4.在xml中经行配置
5.创建ApplicationContext对象getBean
实现一个简单的Spring案例
项目结构:
主函数,使用Spring的API获取Bean实例
存在的文件夹:
package com.pjh.Dao.Demo;
import com.pjh.Dao.UserDaoImp.UserDaoImp;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class demo1 {
public static void main(String[] args) {
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDaoImp userDaoImp =(UserDaoImp) classPathXmlApplicationContext.getBean("userDaoImp");
userDaoImp.save();
}
}
创建Spring的配置文件:applicationContext.xml
存在的文件夹:
代码:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
导入Spring开发的基本坐标,在pom.xml配置文件
文件位置
代码:
4.0.0
com.pjh
SpringIOCInit
1.0-SNAPSHOT
org.springframework
spring-context
5.0.3.RELEASE
编写userDaoImp类的相关信息:
package com.pjh.Dao.UserDaoImp;
import com.pjh.Dao.UserDao;
public class UserDaoImp implements UserDao{
public void save() {
System.out.println("save runing!!");
}
}
运行结果
成功执行
Bean标签介绍与基本属性
3.1 Bean标签的基本配置
用于配置文件交由Spring配置,默认调用无参构造,如果没有无参构造则创建失败
id:Bean实例在Spring中的唯一标识符
class:Bean实例的全限定名称
如果你在某个实现类中复写了有参构造,记得添加无参构造方法,因为你复写了有参构造后,原本的无参构造会消除掉,如果你在这个时候仍然在Spring的配置文件中默认使用无参构造,那么这时候他就会报错
如图
3.2Bean的标签范围配置
这里讲解一下singleton(单例的)和prototype(多例的)
当scope取值为singleton时:
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心配置文件被加载时
Bean的生命周期:
对象创建:当应用