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

Spring框架入门详解

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

Spring框架入门详解

Spring 为什么引入Spring框架

为了提高开发效率和实现模块之间的高聚合低耦合,所以引入了Spring框架

高聚合低耦合 高内聚

内聚是指模块内的联系,各个元素之间紧密联系共同完成任务,模块内的联系越紧密越好,这样可以提高他们之间配合的工作效率 ——(模块之内各个元素男女搭配干活不累)

低耦合

耦合是指各个模块之间的联系,或者是说依赖关系,我们期望的效果应该是他们之间的依赖关系越弱越好,这样不会因为个别模块的失常导致全盘皆输——(各个模块能够独立,离开其他模块也能发光)

Spring的核心IOC和AOP IOC(反转控制或控制反转) IOC是什么

对于模块之间的联系/依赖,我们想要实现降低他们之间的联系/依赖,这个实现的行为就称为解耦,解耦即降低耦合度

IOC就做了各个模块之间解耦的操作

IOC做了什么 工厂模式

在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来,在接下来的使用的时候,直接拿过来用就好了

工厂就是读取配置文件,创建对象然后把对象存到一个spring容器内,然后提供获取对象功能的类——是一个类

AOP(面向切面编程) 使用Spring 在pom.xml中添加依赖

            org.springframework
            spring-context
            5.1.0.RELEASE
        

我们需要的实际是

Spring的四个依赖,但是只需要导入spring-context就可以在扩展出来的引用依赖中,互相引用

在resourses下创建xml配置文件

配置文件的位置和文件的头如上图所示




这个配置文件用来管理配置的类

在测试方法内创建对象
//获取到spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
    //读取xml配置文件,创建对象
	User userimpl = applicationContext.getBean("userimpl", User.class);
    //对象调用其方法 
	userimpl.count();
读取xml文件创建对象的getBean参数
//获取到spring容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
    User userimpl = applicationContext.getBean("userimpl"); //传入bean ID 获取
	User userimpl = applicationContext.getBean( User.class);//传入User类型 获取
	User userimpl = applicationContext.getBean("userimpl", User.class);//都传
Bean标签的使用 Bean标签的属性
属性名
id自定义命名管理类的唯一标识,用来创建对象时引用
class管理类的全限定类名
scope管理类对象的作用范围,默认singleton(单例),prototype(多实例),
init-method初始化对象的名称
destory-method销毁对象的方法名称
Bean标签属性的补充 init-method

默认创建对象时调用无参构造,如果类中没有无参构造直接通过spring读取xml配置文件创建对象会报错,在xml文件中在类对应的bean标签内提供

标签,对有参构造做一定的描述,然后spring读取xml配置文件创建对象时就会自动调用配置好的有参构造



scope

默认为singleton(单例),此时创建的对象为唯一的,全局只有这个对象的一个实例,spring容器启动时被创建,容器销毁对象即回收

prototype(多实例),创建的对象是不同的对象,访问对象时才会创建

就导致

singleton修饰的类,在创建spring容器时就调用无参构造或者有参构造并创建对象

prototype修饰的类,在工厂创建实例的时候才会调用无参构造或者有参构造并创建对象

实例化Bean的三种方式 1.使用构造函数(默认为无参构造) 使用无参构造

     

使用有参构造
 //对有参构造方法做了描述

属性的值

找有参构造的参数传参
name 参数名 (int abc) name = abcvalue 参数值(基本数据类型和字符串)
type 参数类型 (int abc) type = intref 参数值(引用数据类型)
index 参数下标 (int a ,string b) 传入string的index = 1
2.使用静态工厂(static)

使用静态/动态工厂首先需要创建工厂类

工厂类内提供创建对象的方法,方法内部可以添加想要实现的功能

创建好之后在xml配置文件中添加管理



class全限定类名更改为静态工厂的类名,并且添加factory-method属性,值为工厂内方法名

3.使用动态工厂

同静态工厂创建工厂类并提供创建对象的方法,只不过动态工厂需要提供非静态的方法

创建好之后在xml配置文件中添加管理

动态工厂创建对象需要先创建动态工厂类的bean对象,再通过bean对象进行对象的创建




注入依赖 什么是注入依赖

在程序编写时,模块之间的依赖要尽可能的小,我们想要的是低耦合,而IOC做的解耦操作就降低了模块之间的耦合度,但是这个依赖关系并没有完全消失,而是把这种依赖关系交给spring容器来操控,由spring把对象传入所需模块的这个操作,就是注入依赖

注入依赖的三种方式

首先在所要注入依赖的类中添加成员变量定义,以便下边引用

1.构造函数注入

在所要注入依赖的类中提供有参构造,把传入参数值赋值给成员变量,实际做了和setter一样的赋值功能

通过bean标签先创建类对象,然后在bean标签下的标签为类提供的有参构造赋值

找有参构造的参数传参
name 参数名 (int abc) name = abcvalue 参数值(基本数据类型和字符串)
type 参数类型 (int abc) type = intref 参数值(引用数据类型)
index 参数下标 (int a ,string b) 传入string的index = 1

如果参数为引用类型,传参时候用ref传入参数,这个参数为所传入引用类型的bean对象id名

//创建userimpl类的bean对象,供service类传入参数使用
 


    
    
     //这里就用到了上面创建的userimpl的bean对象

2.setter方法注入

setter方法注入依赖首先要在类中提供setter方法,用于赋值

然后通过bean标签先创建类对象,然后在bean标签下的标签为类提供的有参构造赋值




    
    
    

这里发现setter方法注入和构造方法注入的xml配置文件写法大致相同,不同的是传入参数用的标签是标签,并且该标签传入参数只有name一个值

3.p名称空间注入(本质上是setter方法注入)

先在类中提供setter方法

在xml配置文件的头导入p名称命名空间

然后在类的bean标签内部添加赋值语句



    
    
    
    


补充,注入数组集合元素的方式(本质上是setter方法注入)

首先在类中提供成员

然后在xml配置文件下对该类的bean对象做描述

针对不同的数据类型使用不同的标签进行赋值

以service类中的成员顺序赋值方式为下



      	//对于数组,可以直接拿value传参,也可以像list集合一样传参
    	
            
                张曼玉
                林青霞
                郭德纲
                周杰伦
            
        
    	//list集合用list标签
        
            
                加菲猫
                灰太狼
                美羊羊
                皮卡丘
            
        
    	//set集合用set标签
       
           
               阿凡达
               迪士尼
               漫威
           
       
    	//map集合用map标签和entry标签 entry指键值对
        
            
                
                
            
        
    	//properties配置用props和prop标签,value写在外边
        
            
                com.kaifamiao.name
                com.kaifamiao.pace
            
        
    

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

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

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