Spring6 --001
在Spring框架中,它既可以帮助我们创建对象,还可以帮助我们维护对象和对象之间的关系。很显然,这种方式是将。简称DIP,倡导面向抽象编程,面向接口编程,而非面向具体编程,让上层不依赖下层,从而大大降低程序的耦合度,增强程序的可扩展性和可复用性。违背此原则的主要原因是:代码与代码之间的耦合性太高。Spring容器就是一个实现了IoC思想的容器,IoC可认为是一种全新的设计模式,并没有包括在GoF(
Spring6 Learning
一、引入
1.OCP开闭原则
软件开发过程中应对扩展开放,对修改关闭。即进行功能扩展时可以添加额外的类,但是不能修改原本正常运行的程序。违背此原则的主要原因是:代码与代码之间的耦合性太高。
2.依赖倒置原则(Dependence Inversion Principle)
简称DIP,倡导面向抽象编程,面向接口编程,而非面向具体编程,让上层不依赖下层,从而大大降低程序的耦合度,增强程序的可扩展性和可复用性。
但面向接口编程时,会出现一些问题,例如
public class UserServiceImpl implements UserService{
//service服务层调dao持久层
private UserDao userDao;
public void login(...){
...userDao.search()...
}
}
此时userDao为null,会出现空指针异常。要解决空指针 的问题,实质就是解决两个核心问题:
- 谁来负责new对象(对象的创建)
- 谁来将创建好的对象赋值给属性,即new好的对象赋值给userDao,实质上就是让dao对象和service对象产生关系。
而Spring框架可以解决这两个问题。在Spring框架中,它既可以帮助我们创建对象,还可以帮助我们维护对象和对象之间的关系。很显然,这种方式是将对象的创建权、对象与对象之间关系的管理权交出去,不再使用硬编码的方式。这种方式成为控制反转
3.控制反转IoC(Inversion of Control)
一种设计思想,可用于降低代码之间的耦合性,符合依赖倒置原则。IoC的核心是:将对象的创建权和对象关系的管理权交给第三方容器创建与维护。
IoC思想常见的实现方式:依赖注入(Dependecy Injection:DI)。依赖注入的实现方式又包括两种:
- set方式注入
- 构造方法注入
Spring容器就是一个实现了IoC思想的容器,IoC可认为是一种全新的设计模式,并没有包括在GoF(23种设计模式)中
二、Spring入门程序
idea可用jdk版本对照
由于Spring6最低支持JDK17,所以IDEA 专业版请选择2021.2版本之后的。
IDEA2023专业版破解
在创建的模块中,
- 在pom.xml文件中配置所需依赖
- 定义bean
- 编写spring的配置文件(该文件放在类的根路径下,即resource包下)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<bean id="userBean" class="com.lw.spring6.bean.User"/>
</beans>
id属性:代表bean对象的唯一标识
class属性:用来指定要创建的java对象的类名
- 创建测试程序
package com.lw.spring6.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Spring6Test {
@Test
public void testFirst(){
// 初始化Spring容器上下文(解析beans.xml文件,创建所有的bean对象)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
// 根据id获取bean对象
Object userBean = applicationContext.getBean("userBean");
System.out.println(userBean);
}
}
Spring创建对象的本质利用了反射机制调用无参构造方法来创建。
// dom4j解析beans.xml文件,从中获取class的全限定类名
// 通过反射机制调用无参数构造方法创建对象
Class clazz = Class.forName(“com.powernode.spring6.bean.User”);
Object obj = clazz.newInstance();
更多推荐


所有评论(0)