SPRING01_概述、配置文件、bean实例化、依赖注入的方式、依赖注入的数据类型、分模块开发、API使用(三)

简介: SPRING01_概述、配置文件、bean实例化、依赖注入的方式、依赖注入的数据类型、分模块开发、API使用(三)

④. 依赖注入的方式


  • ①. 依赖注入(Dependency Injection):它是Spring框架核心 IOC 的具体实现(将对象的依赖自动注入到属性值(Dependency Injection))


  • ②. 有参构造方法


  public class UserServiceImpl implements UserService {
      private UserDao userDao;
      public UserServiceImpl(UserDao userDao1) {
          this.userDao = userDao1;
      }
      public void save() {
         userDao.save();
      }
  }


  <bean id="userDao" class="com.xiaozhi.dao.impl.UserDaoImpl"/>
  <bean id="userService" class="com.xiaozhi.service.impl.UserServiceImpl">  
  <---这个name对应有参构造中的userDao参数-->            
  <constructor-arg name="userDao1" ref="userDao"></constructor-arg>
  </bean>


②. set方法


//1.在UserServiceImpl中添加setUserDao方法
public class UserServiceImpl implements UserService {
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
                this.userDao = userDao;
    }
    public void save() {
        userDao.save();
    }
}
//2.配置Spring容器调用set方法进行注入
<bean id="userDao" class="com.xiaozhi.dao.impl.UserDaoImpl"/>
<bean id="userService" class="com.xiaozhi.service.impl.UserServiceImpl">
  <!--这个name要求是set后首字母改小写-->
  <property name="userDao" ref="userDao"/>
</bean>


  //当我们执行这些代码的时候,会加载配置文件,配置文件中会依次向下执行
  //先创建UserDaoImpl的对象,后创建UserServiceImol对象
  //最后调用UserServiceImpl中的set方法
  ClassPathXmlApplicationContext app = 
  new ClassPathXmlApplicationContext("applicationContext.xml");
  UserDao userDao1 = (UserDao) app.getBean("userDao");
  System.out.println(userDao1);


  • ③. set方法:P命名空间注入 了解


  1. P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:


xmlns:p="http://www.springframework.org/schema/p"


其次,需要修改注入方式


<bean id="userService" class="com.xiaozhi.service.impl.UserServiceImpl" p:userDao-
 ref="userDao"/>



相关文章
|
5月前
|
存储 人工智能 Java
Spring AI与DeepSeek实战四:系统API调用
在AI应用开发中,工具调用是增强大模型能力的核心技术,通过让模型与外部API或工具交互,可实现实时信息检索(如天气查询、新闻获取)、系统操作(如创建任务、发送邮件)等功能;本文结合Spring AI与大模型,演示如何通过Tool Calling实现系统API调用,同时处理多轮对话中的会话记忆。
955 57
|
10月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
247 2
|
11月前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
276 3
|
11月前
|
IDE Java API
基于Spring Boot REST API设计指南
【10月更文挑战第4天】 在现代的软件开发中,RESTful API已经成为了构建网络应用的标准之一。它通过HTTP协议提供了与资源交互的方式,使得不同的应用程序能够进行数据交互。Spring Boot作为一个功能强大的框架,它简化了配置和开发流程,成为了构建RESTful API的理想选择。本文将详细介绍如何在Spring Boot中设计和实现高质量的RESTful API,并提供一些最佳实践。
186 1
|
9月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
11月前
|
缓存 Java API
基于Spring Boot REST API设计指南
【10月更文挑战第11天】 在构建现代Web应用程序时,RESTful API已成为一种标准,使得不同的应用程序能够通过HTTP协议进行通信,实现资源的创建、读取、更新和删除等操作。Spring Boot作为一个功能强大的框架,能够轻松创建RESTful API。本文将详细介绍如何在Spring Boot中设计和实现高质量的RESTful API。
353 61
|
9月前
|
存储 安全 Java
Spring Boot 编写 API 的 10条最佳实践
本文总结了 10 个编写 Spring Boot API 的最佳实践,包括 RESTful API 设计原则、注解使用、依赖注入、异常处理、数据传输对象(DTO)建模、安全措施、版本控制、文档生成、测试策略以及监控和日志记录。每个实践都配有详细的编码示例和解释,帮助开发者像专业人士一样构建高质量的 API。
255 9
|
9月前
|
Java 数据库 数据安全/隐私保护
轻松掌握Spring依赖注入:打造你的登录验证系统
本文以轻松活泼的风格,带领读者走进Spring框架中的依赖注入和登录验证的世界。通过详细的步骤和代码示例,我们从DAO层的创建到Service层的实现,再到Spring配置文件的编写,最后通过测试类验证功能,一步步构建了一个简单的登录验证系统。文章不仅提供了实用的技术指导,还以口语化和生动的语言,让学习变得不再枯燥。
157 2
|
10月前
|
Java 测试技术 API
详解Swagger:Spring Boot中的API文档生成与测试工具
详解Swagger:Spring Boot中的API文档生成与测试工具
627 4
|
10月前
|
人工智能 Java API
Spring AI Fluent API:与AI模型通信的流畅体验
【11月更文挑战第24天】随着人工智能(AI)技术的飞速发展,越来越多的应用场景开始融入AI技术以提升用户体验和系统效率。在Java开发中,与AI模型通信成为了一个重要而常见的需求。为了满足这一需求,Spring AI引入了ChatClient,一个提供流畅API(Fluent API)的客户端,用于与各种AI模型进行通信。本文将深入探讨ChatClient的底层原理、业务场景、概念、功能点,并通过Java代码示例展示如何使用Fluent API与AI模型进行通信。
266 0