栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring基础框架➠Spring Framework系统架构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring基础框架➠Spring Framework系统架构


什么是Spring

Spring 是一个开源框架,是JavaEE开发必备级技能,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。任何 Java 应用都可以从 Spring 中受益。Spring 的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring 是一个分层的 JavaSE/EE full-stack(一站式) 轻量级开源框架。Spring发展到今天已经形成了一种开发的生态圈,Spring提供了若干个项目,每个项目用于完成特定的功能

Spring 官网:https://spring.io

Spring核心
● Spring 面向切面编程(AOP)和控制反转 (IOC) 容器


Spring优势

☞ 简化开发,降低企业级开发的复杂性
➠IOC
➠AOP
◆事务处理(基于AOP衍生而出)

☞ 框架整合,高效整合其他技术,提高企业级应用开发与运行效率
➠MyBatis
➠MyBatis-plus
➠Struts
➠Struts2
➠Hibernate
➠…

️️️️️️
spring全家桶

以下几种技术基本上能够应对企业级开发所有的主流工作 ***
Spring Framework:(底层框架,设计层框架,在整个Spring家族中具有举足轻重的地位,其它所有技术均依赖Spring Framework,是Spring生态圈中最基本(顶级)的项目,是其他项目的根基)

Spring Boot:(Spring能够简化开发,使用Spring Boot技术可以在简化开发的基础上加速开发,用来提高开发速度)*

spring Cloud:(分布式开发)


Spring Framework 系统架构

Spring 学习路线


核心概念

耦合度


☞ IOC (Inversion of Control)控制反转 ➠ 降低耦合度(充分 )
●使用对象时,由主动new产生对象转换为由外部 提供对象,此过程中对象创建控制权由程序转移到外部 ,此思想称为控制反转

️️Spring技术对IOC思想进行了实现
●Spring提供了一个容器,称为IOC容器(管理对象的创建和初始化 ),用来充当IOC思想中的“外部”
●IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IOC容器中统称为Bean

☞ DI(Dependency Injection)依赖注入
●在容器中建立Bean与Bean之间的依赖关系的整个过程,称为依赖注入


☞目标:充分解耦
●使用IOC容器管理bean (IOC)
●在IOC容器内将有依赖关系的bean进行关系绑定(DI)
☞最终效果
●使用对象时不仅可以直接从IOC容器中获取,并且获取到的bean已经绑定了所有的依赖关系

Spring配置文件

 


    

    
       
       
        
 
    

import com.GY.service.impl.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class GY {
    public static void main(String[] args) {
        //1.获取IOC容器
        ApplicationContext c=  new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.获取bean

        BookService bookService= (BookService) c.getBean("bookService");
        bookService.save();
    }
}

(可以观察到业务层中一点数据层的影子都没有)


Bean的配置

Bean的基础配置

*若对Bean的id的命名习惯不同,Bean也可以起多个名称(别名)


    

    
       
        
    

注意事项
获取Bean无论是通过id还是name获取,如果无法获取到,将抛出异常(未定义的Bean)

Bean的作用范围配置( 控制Bean创建的实例的数量)


Spring默认给我们创建的Bean是一个单例的( singleton)

通过配置scope创建非单例的Bean

 

? 为什么bean默认为单例?***
对于Spring来说它帮我们管理的Bean放在它的容器中,假定它给我们创建出的Bean为非单例的,那么这个Bean的数量将会有无穷多个(用一次,创建一个)这样对Spring容器来说也将会有一个很大的压力。所以Spring不是帮我们管理这一类Bean的(Spring帮我们管理那一类复用的对象)

☞适合交给容器进行管理的Bean
●表现层对象
●业务层对象
●数据层对象
●工具对象
☞不适合交给容器进行管理的Bean
●封装实体的域对象

Bean实例化

# bean本质上就是对象,创建bean使用构造方法完成

️️️️️️
实例化bean的三种方式:

①构造方法(常用)

②静态工厂(了解)(创建对象不用new,而是使用工厂做一定程度的解耦) 了解

?如果对象是以静态工厂创建出来的,那么Spring该如何管理?


    
    

(接口)

package com.GY.dao.impl;

public interface sss {
    public void save();
}

(接口实现类)

package com.GY.dao.impl;

public class useSSS implements  sss {

    public void save(){
        System.out.println("GYGYGYGYGYYGY");
    }
}

(实现类的静态工厂)

package com.GY.dao.impl;

public class sssFactory {
    public static  sss getsss(){
        return new useSSS();
    }
}

运行结果:

③实例工厂(了解)与FactoryBean(实用)

package com.GY.dao.impl;

public class sssFactory {
    public  sss getsss() {
        return new useSSS();
    }
}

实力工厂运行方式


    
    

×××配置繁琐×××

️️️️️️
Spring针对实例工厂创建模式进行了改良
☞使用FactoryBean实例化Bean-

package com.GY.dao.impl;

import org.springframework.beans.factory.FactoryBean;
//实现FactoryBean接口指定泛型
public  class sssFactoryBean implements FactoryBean {
    
    //得到Bean实例
    @Override
    public sss getObject() throws Exception {
        return new useSSS();
    }
    //得到Bean返回对象类型
    @Override
    public Class getObjectType() {
        return sss.class;
    }
   //用来设定单例(true)/非单例(false);通常我们都为单例,因此这个方法一般不写
    @Override
    public boolean isSingleton() {
        return false;
        }
}

☞配置Bean的方式



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号