Spring简单介绍(一)之控制反转

一、Spring的概述

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
Spring的核心:
1.IoC(Inversion of Control 控制反转): 将对象创建权利交给Spring工厂进行管理。
2.AOP(Aspect Oriented Programming 面向切面编程),基于动态代理的功能增强方式。
spring的优势:
1.解耦合,简化开发:通过Spring提供的IOC容器,将对象间的依赖关系交给Spring进行控制
2.AOP编程的支持:方便进行面向切面的编程
3.声明式事务的支持:通过声明式灵活的管理事务

到底什么才是控制反转呢?(工厂+反射+配置文件)
所谓的控制反转,其实就是将原来主动创建对象的权利变成由工厂来创建,然后从工厂中获取对象。

二、Spring基于xml的IOC配置

Spring的IOC的配置:(实现方式:工厂(设计模式)+反射(机制) + 配置文件)
a)创建spring的配置文件 applicationContext.xml
b)初始化Spring的IOC容器获取Spring的工厂,通过spring的工厂获取容器中的对象
下面是Spring基于xml的一个简单的demo:

通过spring来创建对象并且将其装配到spring的IOC容器中,步骤如下:
1、 创建spring的配置文件
2、 导入spring的IOC所需依赖
3、 通过spring的IOC创建对象并装配到IOC容器中
4、 初始化spring的IOC容器并获取工厂,通过工厂从IOC容器中获取bean

业务层接口:

public interface IAccountService {
   
    void saveAccount();//模拟添加账户
}

实现类:

public class AccountServiceImpl implements IAccountService {
   
    //手动初始化
    private IAccountDao accountDao = new AccountDaoImpl();
    @Override
    public void saveAccount() {
   
        accountDao.saveAccount();
    }
}

持久层接口:

public interface IAccountDao {
   
    void saveAccount();
}

实现类:

public class AccountDaoImpl implements IAccountDao {
   
    @Override
    public void saveAccount() {
   
        System.out.println("保存账户");
    }
}

配置文件:通过Spring的IOC来创建对象

<?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">

    <!-- spring 将自己管理的资源统称为bean
            id:资源标识名称,相当于properties中的key,通过该名称可以获取对象
            class:资源路径,一般是实现类的全路径
         -->

    <!-- 将service实现类装配到容器中 -->
    <bean id="accountService" class="cn.itcast.service.impl.AccountServiceImpl"></bean>

    <!-- 将dao实现类装配到容器中 -->
    <bean id="accountDao" class="cn.itcast.dao.impl.AccountDaoImpl"></bean>

</beans>

表现层:

public class Client {
   
    public static void main(String[] args) {
   
        //加载配置文件,获取spring工厂,从容器中获取dao和service的实现类
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //从容器中获取service
        IAccountService accountService = (IAccountService) ac.getBean("accountService");
        System.out.println(accountService);
        //从容器中获取dao
        IAccountDao accountDao = (IAccountDao) ac.getBean("accountDao");
        System.out.println(accountDao);
    }
}

三、Spring中工厂的结构

----BeanFactory接口:Spring容器的顶层接口
------------ApplicationContext接口 (我们常用的接口,对BeanFactory的扩展):
------------------------基于xml配置的两个实现类
--------------------------------1)ClassPathXmlApplicationContext:
--------------------------------2)FileSystemXmlApplicationContext
------------------------基于注解配置的两个实现类
--------------------------------1)AnnotationConfigApplicationContext:

**BeanFactory和ApplicationContext的区别**:
BeanFactory:延迟加载,ApplicationContext立即加载

四、Spring的配置文件

1)bean标签的配置

bean作用: 用于配置对象让 spring 来创建的。
默认

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值