Spring学习笔记-基础

前言:我是在哔哩哔哩上黑马程序员上找的课程。-----2024-12-16

官网Spring | Homeicon-default.png?t=O83Ahttps://spring.io/

Sping全家桶中重要三个:

Spring Framework底层框架,在整个全家通中,所有的技术依赖它执行。

Spring Boot简化开发加速开发 

Spring cloud 分布式开发

框架:

IoC 控制反转:对象的创建控制权由程序转移到外部(简单来说,在类里面创建对象,使用text1,现在又有一个text2要使用,业务层部分也要进行改变需要再次引用text2 ,耦合度高,只改了一点就要改多处地方,解决方法就是,在使用对象的时候,在程序中不主动使用new产生对象,而是由外部提供对象。就是为了解耦) 

 

练习IoC,String入门,以下为原装Java代码:

IOC实现

思路

一:原来的所有代码不动,打开pom.xml文件,引入org.springframework

如下:

<?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>SpringText1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

二:打开IDEA点击右侧m,查看包的情况

三:打开resources文件夹 新建文件(applicationContext.xml)如下所示

然后配置bean

<?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">
<!--1导入坐标-->
<!--    2配置bean-->
<!--    bean标签表示配置bean
id属性表示给bean起一个名字
class属性表示给bean定义类型-->
    <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="org.example.service.impl.BookServiceImpl"/>
</beans>

四:新建一个APP入口文件如下所示:

里面的代码

package org.example;

import org.example.dao.impl.BookDao;
import org.example.service.impl.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;



public class APP {
    public static void main(String[] args) {
        //3 获取IOC容器
        ApplicationContext ctx =new ClassPathXmlApplicationContext("applicationContext.xml");
        // 4 获取bean
        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
        BookDao bookDao=(BookDao) ctx.getBean("bookDao");
        bookDao.save();
    }
}

解释:

ApplicationContext 是 Spring 框架中最核心的接口之一,代表了 IOC容器。它的作用是管理整个Spring应用的bean生命周期,负责创建、初始化、销毁bean,并且处理依赖注入。

ClassPathXmlApplicationContextApplicationContext 的一个具体实现,它从类路径中的 applicationContext.xml 文件中读取Spring的配置。这是最常见的配置方式之一,特别是在Spring的早期版本。

运行结果都是:

DI练习 解决耦合

原装代码在上个IOC练习的基础上来做

思路

一:去BookServiceImpl文件修改,不在以new形式创建对象

原来BookServiceImpl文件类容

package org.example.service.impl;

import org.example.dao.impl.BookDao;
import org.example.dao.impl.BookDaoImpl;

public class BookServiceImpl implements BookService {
  private final BookDao bookDao=new BookDaoImpl();

    public void save() {
        System.out.println("book service save");
        bookDao.save();
    }
}

 修改后:

package org.example.service.impl;

import org.example.dao.impl.BookDao;
import org.example.dao.impl.BookDaoImpl;

public class BookServiceImpl implements BookService {
  //5删除业务层中使用的new的方式创建的dao对象
    private  BookDao bookDao;

    public void save() {
        System.out.println("book service save");
        bookDao.save();
    }
    //6.提供对应的set方法,让对象进入到service中
    public void  setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

二:写配置,告诉相应的关系

看注释7

<?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">
<!--1导入坐标-->
<!--    2配置bean-->
<!--    bean标签表示配置bean
id属性表示给bean起一个名字
class属性表示给bean定义类型-->
    <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="org.example.service.impl.BookServiceImpl">
<!--        dao放在service上-->
<!--        7.配置service与dao关系-->
<!--        prperty表示配置当前bean的属性
name表示配置哪一个具体的属性
ref表示参照哪一个bean-->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

--------------------------------------------------------------------------------------------------2024-12-17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值