欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-08-07
目录

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的配置文件

<?xml version="1.0" encoding="UTF-8"?>

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方法的上面

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。