Spring03

Spring03

1.bean的生命周期函数

初始化方法和销毁方法

java 复制代码
init-method="初始化方法"
destroy-method="销毁方法"

2.DI依赖注入

java 复制代码
依赖注入(Dependency Injection,DI)是一种设计模式,它用于解耦组件之间的依赖关系。在传统的编程模式中,组件通常负责自己的依赖对象的创建和管理,这种紧耦合会导致代码的复杂性和可测试性的问题。而依赖注入则通过将对象的依赖关系从组件中移除,让第三方容器负责对象的创建和注入,从而实现了解耦。

在依赖注入中,对象并不直接创建或获取它所依赖的其他对象,而是通过构造函数、属性注入或方法注入等方式,由外部容器负责将依赖的对象注入到组件中。这样,组件只需要关注自身的功能逻辑,而不需要关心依赖的创建和管理细节。这种解耦的设计方式有助于提高代码的可维护性、可扩展性和可测试性。

Spring框架提供了强大的依赖注入功能,通过IoC容器(Inversion of Control)来管理对象的生命周期和依赖关系。通过配置或注解,开发人员可以将对象的依赖关系描述清楚,并由Spring容器负责对象的创建和注入。这样,开发人员可以更专注于业务逻辑的实现,而不用关心对象的创建和依赖关系的管理。

总结一下,依赖注入是一种解耦组件之间依赖关系的设计模式,它可以提高代码的可维护性和可测试性。Spring框架提供了强大的依赖注入功能,帮助开发人员更轻松地管理对象的依赖关系。
    
    
    <bean id="c1" class="com.aaa.test.Cat"></bean>
    <bean id="p2" class="com.aaa.test.People">
        <property name="cat" ref="c1"></property>
    </bean>
        
        
        
IOC是一种思想
        创建对象不再是自己new
        Spring 根据这个思想 通过DI(依赖注入)的操作来实现了IOC思想

3.set方法注入

java 复制代码
当用set方法注入时,可以给成员变量直接赋值,但是一定要在类中加入成员变量的set函数
    <property name="cat" value="18"></property>
    其中的name 找的其实是类中对应的set函数 也就是setCat
    

4.构造方法注入

xml 复制代码
<bean id="p2" class="com.aaa.test.People">
    <constructor-arg index="0" value="1"></constructor-arg>
     <constructor-arg name="name" value="zhangsan"></constructor-arg>
</bean>

5.p命名空间注入

xml 复制代码
相当于set函数的属性注入 一种简便写法

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       
       xmlns:p="http://www.springframework.org/schema/p"  //添加约束
       
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
       default-lazy-init="true">
    
    <bean id="p1" class="com.aaa.test.People" p:id="666" p:name="sss"></bean>
</beans>

需要在类中有对应的set函数

6.读取配置文件并注入

xml 复制代码
//添加约束
xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/context 	         http://www.springframework.org/schema/context/spring-context.xsd"




<context:property-placeholder location="classpath:druid.properties"></context:property-placeholder>

<bean id="dao" ....
	p:driverClass = "${driverClass}"
    p:driverClass = "${driverClass}"
    p:driverClass = "${driverClass}">

    
</bean>

7.SpEL注入

xml 复制代码
//将一个bean中的内容注入到另一个bean中 此时需要使用SpEL表达式
<bean id="p1" class="com.aaa.test.People" p:id="666" p:name="#{p2.name}"></bean>

8.DI注入值

xml 复制代码
简单值注入
<property name="id" value="1"></property>
使用集合注入时
<property name="tel">
	<list>
    	<value>11111</value>
        <value>11111</value>
        <value>11111</value>
    </list>
</property>
<property name="friends">
	<map>
    	<entry key="xxx" value="xxx"></entry>
        <entry key="xxx" value="xxx"></entry>
        <entry key="xxx" value="xxx"></entry>
    </map>
</property>

9.注入其他bean

xml 复制代码
实际开发中,我们需要一个bean中使用到另一个bean 我们可以使用di依赖注入的形式建立关系
<property name="cat" ref="c1"></property>
此时ref代表引用其他bean标签的id 代表注入这个bean的对象

10.bean的继承

xml 复制代码
将公用的bean抽取出来
创建抽象bean
<bean id="haha" abstract="true">
	<property name="util" ref="daoUtil"></property>    
</bean>

//进行继承
<bean id="xxx" class="xxx" parent="haha"></bean>
<bean id="xxx" class="xxx" parent="haha"></bean>
解决重复配置问题  但要注意配置的这几个java类之间 并没有什么特殊的关系
相关推荐
霸道流氓气质1 分钟前
Maven 批处理脚本与 Qoder 配置使用指南
java·maven
架构源启3 分钟前
Spring AI进阶系列(14)- 2026 可观测性最佳实践:从链路追踪到企业级 AI 治理落地
java·人工智能·spring
码上有光8 分钟前
c++: 继承(下)
android·java·c++·多继承·菱形继承·虚继承
JAVA9658 分钟前
JAVA面试-并发篇 02-synchronized 锁可以重入吗
java·面试
椰椰椰耶9 分钟前
[SpringCloud][12]Nacos配置中心详解,快速上手,Nacos和Eureka的区别
spring·spring cloud·eureka
RemainderTime13 分钟前
Spring Boot脚手架集成Sa-Token实现生产级RBAC权限管理
java·spring boot·后端·系统架构
韦胖漫谈IT15 分钟前
选语言不是站队,是选适合问题的工具
java·python·ai·rust·go·技术落地
lpd_lt18 分钟前
AI生成Spring Boot + Vue 3 + MySQL + MyBatis-Plus的项目实战
java·spring boot·vue·ai编程
JAVA面经实录91718 分钟前
Kafka 全套学习知识手册
java·kafka
源图客22 分钟前
【亚马逊 SP-API 实战】Java 批量创建变体 Listing(父商品 + 子变体 + 独立图片)完整教程(亲测可用)
java·大数据·python