zoukankan      html  css  js  c++  java
  • (二)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在使用前都已经在容器中初始化

  • 相关阅读:
    min-max 容斥
    集训作业
    UOJ Test Round 3
    uoj Goodbye Dingyou
    Codeforces Round #516 (Div. 1) 题解
    Codeforces Round #517(Div. 1) 题解
    概率论(Ⅱ)
    Berlekamp-Massey算法学习笔记
    多项式取模优化线性递推总结
    [ZJOI2019]线段树
  • 原文地址:https://www.cnblogs.com/alanchenjh/p/12251911.html
Copyright © 2011-2022 走看看