Spring之IoC容器和依赖注入(1)

1. IoC的概念

本质上就是工厂模式

以前

以前我们是由自己主动创建一个对象,主动获取一个资源

//Car是接口, 后面是实现类
Car bmw = new Bmw();
Car benZ = new BenZ();
Car audi = new Audi();

现在

使用工厂模式,我们需要的对象由工厂去创建,我们不再自己创建,我们只消费对象。

Car bmw = BeanFactory.getBean("bmw");
Car benZ = BeanFactory.getBean("benZ");
Car audi = BeanFactory.getBean("audi");

好处

  1. 降低类与类之间的耦合度

  2. 我们不再需要自己创建对象,只要使用对象就可以了

  3. 使用Spring框架就是使用工厂模式来创建对象,由Spring容器帮我们管理所有的Java对象

容器的概念

在项目开发中将对象存放在什么地方?

由于项目中对象是大量的, 所以考虑用集合 Map/List 存储。而在使用时需要根据名称查找, 所以通常使用 Map 存储

2. Spring框架介绍

  • Spring是分层的Java SE/EE应用的full-stack轻量级开源框架。

  • 它是以IOC(Inversion Of Control)控制反转和AOP(Aspect Oriented Programming)面向切面编程为核心

  • 提供了表现层springmvc和持久层Spring JDBC以及业务层的事务管理等企业级应用解决方案。

  • 将开源世界中众多优秀的第三方框架和类库整合,成为越来越受欢迎的Java EE企业级应用框架。

体系结构组成

Core Container核心容器

  • Beans模块:提供了BeanFactory,工厂模式的实现,Spring将所有管理的对象称为Bean。

  • Core模块:提供了Spring框架的基本组成部分,包括IoC和DI依赖注入的功能。

  • Context模块:访问和配置Bean对象的上下文对象,核心容器。如:ApplicationContext

Data Access/Integration数据访问与集成

  • JDBC模块:提供了JDBC的支持,如:JdbcTemplate

  • ORM模块:对主流的ORM框架提供了支持,如:JPA,JDO,Hibernate等

  • Transaction模块:支持声明式事务的管理

Web

  • Servlet模块:包含了SpringMVC和REST Web Services实现的Web应用程序

  • Web模块:提供了基本的Web开发集成特性,如:文件上传,收发邮件等。

其他模块

  • AOP模块:提供了面向切面编程的功能

  • Aspects模块:提供了与AspectJ框架集成功能

  • Test模块:提供了对单元测试和集成测试的支持

3、搭建Spring入门开发环境

1、导入依赖包

 <!--导入Spring基础框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.0.RELEASE</version>
        </dependency>

2、创建applicationContext.xml文件

    1、该配置文件是Spring框架的主配置文件,文件位置为类的根路径下,文件名称可以修改。

    2、在idea中使用菜单创建,会自动编写Schema的约束信息

    3、配置applicationContext.xml文件,让Spring框架管理对象

3、编写持久层

编写CustomerService接口,添加保存客户的方法 void saveCustomer();

CustomerService.java

package com.it.service;

/**
 * 业务层接口
 */
public interface CustomerService {

    /**
     * 保存客户对象
     */
    void saveCustomer();
}

编写客户业务层实现类,实现接口中的方法,直接输出一句话"保存客户"

CustomerServiceImpl.java

package com.it.service.impl;

import com.it.service.CustomerService;

/**
 * 业务层实现类
 */
public class CustomerServiceImpl implements CustomerService {
    /**
     * 保存客户对象
     */
    @Override
    public void saveCustomer() {
        System.out.println("保存了客户");
    }
}

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

    <!--
    创建业务对象放到Spring容器中
    class:指定类全名,指定的是实现类,不是接口
    id:容器中唯一标识,通过id获取这个对象
     -->
    <bean class="com.it.service.impl.CustomerServiceImpl" id="customerService"/>
</beans>

测试类

package com.it.test;

import com.it.service.CustomerService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestCustomer {

    @Test
    public void testCustomer() {
        //1.创建Spring容器,参数:指定spring的配置文件
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.从容器中获取对象
        CustomerService customerService = (CustomerService) context.getBean("customerService");
        //3.调用对象的方法
        customerService.saveCustomer();
        //4.关闭容器
        context.close();
    }
}

Spring之IoC容器和依赖注入(2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值