干就完了系列之-Spring框架实操(一)

180 阅读2分钟

前言

纸上得来终觉浅,绝知此事要躬行。这两天看Spring框架、以及遇到的一些问题,加之自己的实操颇有感触,遂提笔记之。

IOC(控制反转)

简而言之就是本身由程序new出来的对象,交由Spring容器进行创建及管理降低类与类之间的耦合性,而且Spring创建的对象天然就是单例的,避免重复创造对象节省内存空间,下面我们来看看简单的实现步骤。

1.导入坐标

<!--导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.10.RELEASE</version>
</dependency>

2.创建Dao、Service接口及其实现类

public interface BookDao {

    public void save();

}
public class BookDaoImpl implements BookDao {
    @Override
    public void save() {
        System.out.println("book dao save...");
    }
}
public interface BookService {

    public void save();

}
public class BookServiceImpl implements BookService {

    private final BookDao bookDao = new BookDaoImpl();


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

3.创建配置文件

我们需要在resource目录下创建applicationContext.xml文件(名字可以随便起),配置BookDaoServciImpl的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"
        >
    <bean id="bookService" class="com.qmc.service.impl.BookServiceImpl">
</beans>

这里的id就是唯一标识符,class为要交由spring创建及托管类的全路径

4.编写测试方法

通过ClassPathXmlApplicationContext这个类读取解析配置文件从将配置文件中的类全部交由spring创建和托管

public class App {
    public static void main(String[] args) {
        ApplicationContext atx = new ClassPathXmlApplicationContext("applicationContext.xml");
        BookService bookService = (BookServiceImpl)atx.getBean("bookService");
        bookService.save();
    }
}

执行结果 image.png

DI(依赖注入)

依赖注入的目的是消除BookServiceImpl中通过new创建的BookDao,将这一部也交由Spring进行管理,具体操作步骤如下:

1.删除BookServiceImpl中通过new创建的BookDaoImpl,并提供setter方法

public class BookServiceImpl implements BookService {

    private BookDao bookDao;


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

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

2.修改配置文件

<?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="bookService" class="com.qmc.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
    </bean>
    <bean id="bookDao" class="com.qmc.dao.impl.BookDaoImpl"/>
</beans>

1658831924863.jpg 这里name必须和setXX后面的一致,去掉set首字母小写,ref引用着这个bean的ID

3.测试

public class App {
    public static void main(String[] args) {
        ApplicationContext atx = new ClassPathXmlApplicationContext("applicationContext.xml");
        BookService bookService = (BookServiceImpl)atx.getBean("bookService");
        bookService.save();
    }
}

执行结果 image.png 和上面的执行结果一样的,说明我们交由Spring创建BookDaoImpl依赖注入成功。

结尾

下一篇我们讲讲Spring自动装配那些事儿