【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入(二)

简介: 【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入(二)

2 xml配置文件

Bean标签的配置


属性:


id:Bean在Spring容器中的唯一标识,在一个xml配置文件内部所有Bean标识的命名不可与之重复


class:Bean的全限名,指定这个id标识所对应的Bean类。Spring框架底层利用反射通过这个全限名对应Bean类的无参构造器创建对象。


scope:指的是对象创建的模式,有以下五中取值


singleton:是scope属性的默认值,相当于饿汉单例模式,也就是说Bean对象只在使用xml配置文件创建Spring客户端对象的时候创建一次,之后使用getBean方法获取Bean对象的时候返回的都是之前创建好的Bean对象。singleton一共就在Spring的核心文件被加载时创建一次一个Bean对象存储在容器里,当应用卸载销毁容器时对象随之销毁。

prototype:相当于多例设计模式,也就是说在每一次使用Spring客户端对象的getBean方法时都会创建一个新的Bean对象并返回。prototype是使用几次getBean方法就会创建几个Bean对象,当对象长时间不用的时候就会被java的垃圾回收机器回收对象也就销毁了。

request:web项目中,Spring创建一个Bean对象并将其存入到request域中

session:web项目中,Spring创建一个Bean对象并将其存入到session域中

global session:web项目中,应用于portlet环境中,如果没有portlet环境的话就相当于session

init-method:指定Bean类中的初始化方法


destory-method:指定Bean类中的销毁方法


import标签

image.png

import标签是用来将其他配置文件的配置内容加载到这个配置文件中


Bean实例化的三种方法:


无参构造方法实例化(重点):无参构造方法其实就是我们上面讲的那些知识点

工厂静态方法实例化:通过工厂中的静态方法进行实例化,只需创建一个工厂类,类里面创建一个静态方法,方法返回一个无参构造器创建的Bean对象,再设置xml文件即可

image.png

image.png



工厂实例方法实例化:通过工厂中的实例方法进行实例化,与工厂静态方法的区别就是,用于返回一个无参构造器创建的Bean对象的方法是实例方法,xml配置文件也不一样,要更加复杂些。

image.png


image.png


3 依赖、数据注入问题

引出问题


       现在有这么一个情况,除了上面已经有的dao层之外,新建一个业务层service。service层的结构和dao层相似,也是一个接口和实现类。目录结构如下:

image.png

UserServiceImpl类和UserDaoImpl类也都通过xml配置文件的bean标签进行配置。

image.png

此时有一个需求,就是要在service层的UserServiceImpl类里的cast()方法中调用UserDaoImpl类的save()方法,实现思想就是在UserServiceImpl类里的cast()方法中使用之前UserDaoDemo的那一套进行调用UserDaoImpl类的save()方法

image.png

在新建的UserController类中使用那一套调用UserServiceImpl类里的cast()方法

image.png



这么一来,就可以在Spring容器外部将Dao组装到了Service 那么,有没有一种方式,可以在Spring容器内部就将Dao组装到了Service呢?有的,于是乎就出现了依赖注入。

image.png

依赖注入:


       依赖注入(Dependency Injection)是Spring框架核心IOC(控制反转)的具体实现。在编程的时候通过控制反转就可以把对象的创建交给Spring 容器,IOC只是降低他们之间的依赖关系并不会消除依赖,service层仍会调用dao层的方法。那么,该如何将UserDao注入到UserService的内部呢?


相关文章
|
4月前
|
前端开发 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档—— Swagger 简介
第6课介绍了在Spring Boot中集成Swagger2以展示在线接口文档的方法。随着前后端分离架构的发展,API文档成为连接前端与后端开发的重要纽带。然而,代码更新频繁导致文档难以同步维护,Swagger2解决了这一问题。通过Swagger,在线API文档不仅方便了接口调用方查看和测试,还支持开发者实时测试接口数据。本文使用Swagger 2.2.2版本,讲解如何在Spring Boot项目中导入并配置Swagger2工具,从而高效管理接口文档。
142 0
|
4月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult<T>`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码"0"和消息"操作成功!",有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
214 0
|
4月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 "",Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
106 0
|
4月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——Spring Boot 默认对Json的处理
本文介绍了在Spring Boot中返回Json数据的方法及数据封装技巧。通过使用`@RestController`注解,可以轻松实现接口返回Json格式的数据,默认使用的Json解析框架是Jackson。文章详细讲解了如何处理不同数据类型(如类对象、List、Map)的Json转换,并提供了自定义配置以应对null值问题。此外,还对比了Jackson与阿里巴巴FastJson的特点,以及如何在项目中引入和配置FastJson,解决null值转换和中文乱码等问题。
310 0
|
1月前
|
Java API 数据库
JPA简介:Spring Boot环境下的实践指南
上述内容仅是JPA在Spring Boot环境下使用的冰山一角,实际的实践中你会发现更深更广的应用。总而言之,只要掌握了JPA的规则,你就可以借助Spring Boot无比丰富的功能,娴熟地驾驶这台高性能的跑车,在属于你的程序世界里驰骋。
74 15
|
6月前
|
人工智能 安全 Dubbo
Spring AI 智能体通过 MCP 集成本地文件数据
MCP 作为一款开放协议,直接规范了应用程序如何向 LLM 提供上下文。MCP 就像是面向 AI 应用程序的 USB-C 端口,正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一个将 AI 模型连接到不同数据源和工具的标准化方法。
2742 64
|
4月前
|
前端开发 Java 数据库连接
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
106 5
|
6月前
|
存储 NoSQL Java
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
146 21
|
9月前
|
XML 存储 JavaScript
|
9月前
|
存储 Java API
如何使用 Java 记录简化 Spring Data 中的数据实体
如何使用 Java 记录简化 Spring Data 中的数据实体
94 9

热门文章

最新文章