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

SSM框架中项目模块配置:Spring容器

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

SSM框架中项目模块配置:Spring容器

目录

Spring

Spring简介Ioc控制反转

Ioc的概念Spring的配置文件Spring容器创建对象的特点DI(依赖注入)基于注解的DI

Spring

Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。

Spring简介

作用:为代码“解耦合”,降低代码间的耦合度(符合软件工程中的高内聚、低耦合的特点),让对象和对象(模块和模块)之间关系不是通过代码关联,而是通过配置来说明。

Spring根据代码的功能特点,使用Ioc降低业务对象之间耦合度,Ioc使得主业务在相互调用的过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了,而是由Spring容器统一管理,自动注入,即赋值。而AOP使得系统级服务得到了最大复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由Spring容器统一完成织入。

官网:

Spring安装包:

- spring-framework-5.2.5.RELEASE
	- docs # 相关文档
		- javadoc-api # 相关api
		- kdoc-api
		- spring-framework-reference # 开发手册
	- libs # 源码
		- spring-model-5.2.5.RELEASE.jar # 相关模块的字节码.class文件
		- spring-model-5.2.5.RELEASE-javadoc.jar # 相关模块的开发文档
		- spring-model-5.2.5.RELEASE-sources.jar # 相关模块的源文件.java
	- schema # 相关模块的约束文件

Spring优点

轻量针对接口编程、解耦合AOP编程的支持方便集成各种优秀框架 Ioc控制反转 Ioc的概念

概念:Ioc,Inversion of Control,控制反转,是一个理论,把对象的创建、属性赋值,对象的声明周期都交给代码以外的容器管理。

Ioc分为控制和反转

控制:对象创建、属性赋值,对象的声明周期反转:把开发人员管理对象的权限转移给了代码之外的容器实现,由容器完成对象的管理。正转:开发人员在代码中,使用new构造方法创建对象。

Ioc的实现

依赖注入:DI,Dependency Injection,程序只需要提供要使用的对象的名称即可,对象如何创建,如何从容器中查找,获取都由容器内部自己实现 Spring的配置文件



    
	
    
  

Spring的标准配置文件

根标签是beansbeans后面是约束文件说明,beans里面是bean声明bean是java对象,Spring容器创建的java对象

创建对象并调用接口方法

package org.bjpowernode;

import org.bjpowernode.service.SomeService;
import org.bjpowernode.service.impl.SomeServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AppMain {
    public static void main(String[] args) {
        
        // SomeService service = new SomeServiceImpl(); Impl一般指接口实现类
        // service.doSome();
        
        
        String config = "beans.xml";
        // 创建容器对象, ApplicationContext表示spring容器对象,通过ctx获取某个Java对象
        ApplicationContext ctx = new ClassPathXmlApplicationContext(config);
        // 从容器中获取指定名称的对象,使用getBean("id")
        SomeService service = (SomeService)ctx.getBean("someService");
        // 调用对象的方法,接口中的方法
        service.doSome();
    }
}
Spring容器创建对象的特点

Spring创建对象特点:

    Spring创建对象调用的构造函数默认是无参构造,如果定义了有参构造,则再定义无参构造.

    创建Spring容器对象的时候,会读取配置文件,创建文件中声明所有的的Java对象,即new ClassPathXmlApplicationContext(config);

    优点:获取对象的速度快,因为对象已经创建好了

    缺点:占用内存

    String对象存在Spring内部的map中,并从map进行获取对象(可以调用ApplicationContext接口里面的方法试一试)

创建非自定义类对象


	

DI(依赖注入)

Spring调用类的五参数构造方法,创建对象,对象创建后给属性赋值

使用xml配置文件中的标签和属性使用注解

DI分类:

set注入,设值注入构造注入

set注入,简单类型注入(简单的数据类型和String)



    
        
        
    

注入过程:按照前调用无参构造的原则,其后调用setxx方法进行赋值(和属性名无关,无关是不是类的属性),而非直接通过有参构造进行赋值

给非自定义类同理

set注入,引用类型注入



    
        
        
        
    
    
        
        
    


构造注入:Spring调用类中的有参构造方法,在创建对象的同时,给属性赋值


    
    
    
        
        
        
    
    
    
        
        
        
    
    
    
        
        
    


引用类型自动注入:Spring可以根据某些规则给引用类型完成赋值,只对引用类型有效,规则byName和byType

byName:按名称注入,Java类中引用类型属性名称和Spring容器中bean的id一样,且数据类型也一样,这样的bean能够赋值给引用类型。byType:按类型注入,Java类中引用类型的数据类型和Spring容器中bean的class同源关系,则可以赋值给引用类型。

byName规则


    
        
        
    

    
    
        
        
    

byType规则(只能有一个,具有唯一性)

同源关系

java中引用类型的数据类型和bean的class值是一样的。java中引用类型的数据类型(父)和bean的class(子)值是父子类关系的。java中引用类型的数据类型和bean的class值是接口和实现类关系的。


    
        
        
    

    
        
        
    


多个配置文件:在实际应用里,随着应用规模的增加,系统中Bean数量也大量增加口,导致配置文件变得非常庞大、臃肿。为了避免这种情况的产生,提高配置文件的可读性与可维护性,可以将Spring配置文件分解成多个配置文件。

按功能模块分,-个模块一个配置文件。按类的功能分,数据库操作相关的类在一个文件,配置redis, 事务等等的一个配置文件。

Spring管理多个配置文件:常用的是包含关系的配置文件,项目中有一个总的文件,里面是有import标签包含其他的配置文件



使用通配符*


基于注解的DI

概念:使用Spring提供的注解,完成Java对象创建,属性赋值

Component:需要在类上使用注解@Component,该注解的value属性用于指定该bean的id值

@Component(value="myTest") 
class Test {
	// do something    
}

    
	

利@Component功能相同的创建对象的注解。

@Repository:放在dao接口的实现类上面,表示创建dao对象,持久层对象,能访问数据库@Service:放在业务层接口的实现类上面,表示创建业务层对象,业务层对象有事务的功能@Controller:放在控制器类的上面,表示创建控制器对象。属于表示层对象。控制器对象能接受请求,把请求的处理结果显示给用户。

以上四个注解都能创建对象,但是@Repository @Service @Controller有角色说明,表示对象是分层的。对象是属于不能层的,具有额外的功能。


扫描多个包的三种方式


    
	
	
	
	
    
	


注解指定属性值的方式

简单类型value引用类型

简单类型value

放置位置:

在属性定义的上面,无需set方法,推荐使用在set方法的上面

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

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

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