Spring框架

文章介绍了软件设计中的开闭原则(OCP)、依赖倒置原则(DIP)以及控制反转(IOC)的概念。Spring框架作为实现IOC思想的例子被提及,它负责对象的创建和管理。文章还展示了Spring的基本配置,包括pom.xml和spring.xml文件,并提到了Spring如何通过反射机制实例化对象。
摘要由CSDN通过智能技术生成

  1.ocp开闭原则

什么是ocp?

ocp是软件七大开发原当中最基本的一个原则:开闭原则

对扩展开放,对修改关闭

ocp原则是最核心的,最基本的,其他的六个原则都是为这个原则服务的

ocp原则的核心是:只要你在扩展系统功能的时候,没有修改以前写好的代码,那么这个设计就是符合ocp原则的。反之,如果在扩展系统功能的时候,你修改了之前的代码,那么这个设计是失败的,违背ocp原则。

当进行系统功能扩展的时候,如果动了之前稳定的程序,修改了之前的代码,之前的程序都是需要重新测试的,这个是不想看到的,因为非常麻烦。

2.依赖倒置原则(DIP原则)

什么是依赖倒置原则?

面向接口编程,面向抽象编程,不要面向具体编程

依赖倒置原则的目的?

降低程序的耦合度,提高扩展力。

什么叫做符合依赖倒置原则?上不依赖下

什么叫违背依赖倒置原则? 

上,依赖下,就是违背

只要下一改动,上就受到牵连

3.控制反转(IOC)

什么是控制反转?

对象我不new了,控制权交给你,是一种编程思想,或者叫做一种新的设计模式,没有被纳入GOF23种设计模式范围中。

4.Spring框架

spring框架实现了控制反转IOC这种思想

spring框架可以帮我们new对象,帮我们维护对象和对象之间的关系

spring是一种实现了IOC思想的容器。

控制反转的实现方式有多种,其中比较重要的叫做:依赖注入(dependency injection简称di)

控制反转是一种思想,依赖注入是实现方式

依赖注入的两种方式

1.set注入

2.构造器注入

5.第一个程序

pom.xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>spring002-first</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--学习spring项目可以是普通Java程序-->
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <!--spring-context依赖-->
            <!--当你引入spring Context依赖之后,表示将spring的基础以来引入了-->
            <!--如果你想使用spring的jdbc,或者其他的tx,那么还需要在次添加依赖-->
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

</project>

创建spring.xml文件

<?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">
   <!--这是spring的配置文件,是idea工具为我们提供了这个文件的模板,一定要使用这个模板来创建,这个文件不一定叫做spring.xml,可以是其他文件,最好放在类的根路径下,方便后期的移植 -->
    <!--<bean id="身份证号" class="类的全路径类名"/>-->
    <bean id="userbean" class="com.powernode.spring6.bean.User"/>
</beans>

创建test测试类

  @Test
    public void testspring9(){
        //1.获取spring容器对象
        //ApplicationContext翻译为应用上下文,其实就是spring容器
        //Application是一个接口,接口下有很多实现类,其中一个实现类叫做ClassPathXmlApplicationContext
        //ClassPathXmlApplicationContext专门从类路径当中加载spring配置文件的一个spring上下文对象
        ApplicationContext ctx =new ClassPathXmlApplicationContext("spring.xml");
        //2.根据bean的id获取容器中的对象
        Object user = (User)ctx.getBean("userbean");
        System.out.println(user);
    }

spring是怎么实例化对象的?

默认情况下spring会通过反射机制,调用类的无参构造方法来实例化对象

Class<?> aClass = Class.forName("com.powernode.spring6.bean.User");
        Object o = aClass.newInstance();

spring会把创建好的对象放到Map<String,object>当中,其中key为id,value为对象

spring的配置文件,名字,路径,个数都是随意的。

不是在调用getbean()方法的时候才创建对象,而是执行解析xml文件中时,就创建好对象了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值