zoukankan      html  css  js  c++  java
  • 1.开始Spring

    1 对Spring的认识

    为了实现控制反转,我们可以想象java创建了一个工厂类,工厂类可以去读取配置文件 比如一个.property文件。通过这个文件中的配置,反射创建一些对象,当外界需要某个类的对象的时候,就像这个工厂索取。

    但是存在一个问题,那就是每次索取都会创建一个新的对象,而不是单例的。于是java就弄了一个Map字典,维护这一个字典,只要用户需要的对象不存在,就把对象创建好装进这个字典。如果用户需要的对象在

    这个字典中存在,就直接从这个字典中取,这就实现了单例,我们将这个字典视为一个存放类对象的容器。它以后发展为我们所谓的ioc容器——ApplicationContext。

    2.一个最简单的Spring 控制反转案例如下:

    a.创建一个接口和接口的实现如下:

    package com.itheima.service;
    
    public interface IAccountService {
        void saveAccount();
    }
    
    package com.itheima.service.impl;
    
    import com.itheima.service.IAccountService;
    
    public class AccountServicePureImpl implements IAccountService {
        public void saveAccount() {
            System.out.println("朝辞白帝彩云间");
        }
    }

    b.在Resource下创建一个bean.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-3.0.xsd">
    
    
        <bean id="accountServicePureImpl" class="com.itheima.service.impl.AccountServicePureImpl"></bean>
    
    
        </beans>

    c.如果要调用这个接口的实现类 首先要创建容器

    package com.itheima.ui;
    
    import com.itheima.service.IAccountService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Client {
        public static void main(String[] args) {
            //告诉容器去读bean.xml中的配置  ClassPathXmlApplicationContext 是容器的三个主要常用的实现类之一
            ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
            IAccountService ac=(IAccountService)context.getBean("accountServicePureImpl");
            ac.saveAccount();
        }
    }

     3.IOC有三种IOC方式 第一 set方法 注意必须要有set方法  不能只定义一个变量  第二 构造函数  第三注解注入

    package com.itheima.service.impl;
    
    import com.itheima.dao.IAccountDao;
    import com.itheima.service.IAccountService;
    
    public class AccountServiceImpl implements IAccountService {
        private IAccountDao accountDao=null;
        public void setAccountDao(IAccountDao accountDao) {
            this.accountDao = accountDao;
        }
    
    
        public void saveAccount() {
            accountDao.saveAccount();
        }
    }
    ---------------以上是实现类--------------------

    下面是配置

    <?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-3.0.xsd">
        <bean id="accountServiceImpl" class="com.itheima.service.impl.AccountServiceImpl">
            <property ref="accountDaoImpl" name="accountDao"></property>
        </bean>
        <bean id="accountDaoImpl" class="com.itheima.dao.impl.AccountDaoImpl"></bean>
    
    
        </beans>

    三生三世

  • 相关阅读:
    简单工厂设计模式-模拟磁盘打开文件
    使用GDI绘制验证码
    nginx笔记.
    git 笔记
    ubuntu错误解决。
    测试那些事儿—简述CPU的工作原理
    田螺便利店—win10专业版激活码
    田螺便利店—PyCharm安装第三方库
    田螺便利店—命令提示符总是提示不是内部外部命令
    田螺便利店—ipconfig命令不是内部命令或外部命令怎么解决?
  • 原文地址:https://www.cnblogs.com/wholeworld/p/11531085.html
Copyright © 2011-2022 走看看