(二)Spring初步搭建、IOC创建对象

环境准备:

见java环境搭建

新建maven项目,同时搭好项目结构,新建相应的包

Spring的初步搭建

1、导入jar包,Spring版本为5.1.10,同时导入junit包

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.10.RELEASE</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

2、编写实体类User

加入以下属性,生成get set方法,对应数据库表中的字段
private String name;
private String pwd;
private int age;

3、在resources中新建Spring配置文件,applicationContext.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">

    <!--bean就是java对象 , 由Spring创建和管理-->
    <bean id="user" class="com.alan.pojo.User">
        <property name="name" value="name from bean"/>
    </bean>

</beans>

4、创建测试类
import com.alan.pojo.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {

    @Test
    public void test(){
        //解析applicationContext.xml文件 , 生成管理相应的Bean对象 
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
     //getBean : 参数即为spring配置文件中bean的id .
      User user = (User) context.getBean("user");
      System.out.println(user.getName());
}
}

5、测试输出结果

 小结:

User对象由Spring来创建,这个对象的属性通过Spring容器进行设置(XML配置),这样的一个过程即IOC控制反转,将属性交给了用户去设置

  • 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
  • 反转 : 程序本身不创建对象 , 而变成被动的接收对象 

IOC是一种编程思想,由主动的编程变成被动的接收,依赖注入是实现IOC的一种方式

依赖注入 : 就是利用set方法来进行注入的


IOC创建对象
基于第一篇IOC基础推导,现在通过Spring容器来实现
1、新增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">

    <bean id="ImplA" class="com.alan.dao.UserDaoImplA"/>
    <bean id="ImplB" class="com.alan.dao.UserDaoImplB"/>

    <bean id="ServiceImpl" class="com.alan.service.UserServiceImpl">
        <!--注意: 这里的name并不是属性 , 而是set方法后面的那部分 , 首字母小写-->
        <!--引用另外一个bean , 不是用value 而是用 ref-->
        <property name="userDao" ref="ImplA"/>
    </bean>

</beans>

2、测试

    @Test
    public void test2(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserServiceImpl serviceImpl = (UserServiceImpl) context.getBean("ServiceImpl");
        serviceImpl.getUser();
    }

现在彻底不用再去程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC : 对象由Spring 来创建 , 管理 , 装配 !

总结:在配置文件加载时,Spring容器中管理的对象就已经初始化了,即配置文件中的bean在使用前都已经在容器中初始化

原文地址:https://www.cnblogs.com/alanchenjh/p/12251911.html