spring IoC-创建工程基于xml开发

创建maven工程

略

修改pom.xml

添加下面依赖

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.10.RELEASE</version>
    </dependency>
</dependencies>

在pom.xml点击右键 -> maven -> reimport 导入依赖

加载jar包说明

上图红框中的jar,其中4个jar包:

  • beans.jar
  • context.jar
  • core.jar
  • expression.jar

就是下图中 Core Container 中的核心模块

实现IUserService接口

public interface IUserService {
    public void save(String username, String password);
}

实现UserSrvImpl类

public class UserSrvImpl implements IUserService {

    public void save(String username,String password){
        System.out.println("保存 "+username+","+password+" 成功!");
    }
}

创建xml配置文件

在 resources 文件夹下创建 spring.xml 配置文件

在spring中,该配置文件名字一般为:application-config.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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="UserSrvImpl" class="top.malaoshi.UserSrvImpl">
    </bean>
</beans>
  • bean标签中的id:必须唯一,在代码中,通过该 id 获取对象
  • bean标签中的class:类的全路径,spring根据该类路径,通过反射方式创建对象

实现主启动类

public class Main {
    public static void main(String[] args) {
        //读取spring.xml文件,启动spring容器
        ApplicationContext ac=new ClassPathXmlApplicationContext("spring.xml");
        //根据spring.xml中bean标签的id,从spring容器中取出对象
        IUserService srv=(IUserService)ac.getBean("UserSrvImpl");
        //另一种写法
        //IUserService srv=ac.getBean("UserSrvImpl",IUserService.class);
        srv.save("lilei","123456");

    }
}

说明:

  • ApplicationContext:读取spring.xml文件,启动spring容器
  • ClassPathXmlApplicationContext加载类路径下(工程内)的配置文件

执行结果:

保存 lilei,123456 成功!

spring IOC 解耦总结

主启动类使用 UserSrvImpl,没有引用该类(引用 IUserService 接口是必须的,不可避免),也没有 通过 new 创建 该类对象

是由 spring容器 管理(创建) UserSrvImpl 类对象,并从spring容器中获取该类对象


原文出处:/show_1IX1WD6mVWS.html