spring崇尚:不重复的造轮子
二、工厂设计模式
工厂设计模式:工厂生产对象(配置文件properties+反射)
Spring创建对象的实现原理:
根据配置文件的id得到对应的class属性值,根据反射,通过类全路径创建对象;
通过配置文件,通过工厂设计模式,有反射动态创建对象
具体步骤为:
1 创建一个小配置文件a1.properties、放在src下
key=value
username=hr
password=hr
2 利用流读取小配置文件
InputStream is = Xxx.class.getResourceAsStream(“/a1.properties”);
3 创建Properties的对象,加载读取的输入流
Properties pro = new Properties();
pro.load(is)
1.4 根据key获取value
String value = pro.getProperty(“username”);
Spring 框架就利用工厂设计模式对Service和DAO进行解耦合
何为工厂:创建管理对象的容器
思路:将对象的创建交给工厂完成,工厂读取小配置文件,获取要创建对象的全限定名,利用反射创建类的对象并发返回给调用者
编写小配置文件,存放需要由工厂创建对象的全限定名
创建一个类BeanFactory (对象工厂,工厂设计模式的核心类)
bean(对象) Factory(工厂)
1.1 使用静态代码块加载读取小配置文件
1.2 创建一个方法创建开发者需要的对象
如下图所示:


如此,就把我们的Service和Dao进行了解耦合,使得Dao实现类的创建不再在程序中创建,而是通过读取配置文件来创建。这样的解耦合使得程序更灵活,
三、搭建Spring开发环境
1.1 添加jar包,
搭建一个基础的Spring环境所需要的最基础的jar包有以下几个:

1.2 添加配置文件applicationContext.xml,放在src下
1.3 配置applicationContext.xml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89JdcYon-1670239903517)(https://mmbiz.qpic.cn/mmbiz_png/nMicohCxH9r2BPjylgQTOxQFBMTBcucNMZpohd3FpUkGsDf2wzGZa3cjx7icEg6dCMg15vGibA9Q8C21s6CdL6K0g/0?wx_fmt=png)] s" 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"> 1.4 创建spring工厂,获取对象 import com.macw.entity.Person; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test1 { public static void main(String[] args) { //需求:获取Person这个类的对象 //1.创建spring工厂 参数:写appliactionContext.xml文件的路径 //classpath(类路径): src就是classpath路径的根 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(“classpath:applicationContext.xml”); //2.从spring工厂中获取Person类的对象 //参数:bean标签的id Person person = (Person) ac.getBean(“p1”); System.out.println(person); } 四、spring创建对象的时机和次数 时机:什么时候创建这个类的对象? 次数:它是单例还是多例? bean标签有一个属性: System.out.println(person); } 四、spring创建对象的时机和次数 时机:什么时候创建这个类的对象? 次数:它是单例还是多例? bean标签有一个属性: