• Spring03


    Spring03

    1.bean的生命周期函数

    初始化方法和销毁方法

    init-method="初始化方法"
    destroy-method="销毁方法"
    
    • 1
    • 2

    2.DI依赖注入

    依赖注入(Dependency InjectionDI)是一种设计模式,它用于解耦组件之间的依赖关系。在传统的编程模式中,组件通常负责自己的依赖对象的创建和管理,这种紧耦合会导致代码的复杂性和可测试性的问题。而依赖注入则通过将对象的依赖关系从组件中移除,让第三方容器负责对象的创建和注入,从而实现了解耦。
    
    在依赖注入中,对象并不直接创建或获取它所依赖的其他对象,而是通过构造函数、属性注入或方法注入等方式,由外部容器负责将依赖的对象注入到组件中。这样,组件只需要关注自身的功能逻辑,而不需要关心依赖的创建和管理细节。这种解耦的设计方式有助于提高代码的可维护性、可扩展性和可测试性。
    
    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思想
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3.set方法注入

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

    4.构造方法注入

    <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>
    
    • 1
    • 2
    • 3
    • 4

    5.p命名空间注入

    相当于set函数的属性注入 一种简便写法
    
    
    
        
        <bean id="p1" class="com.aaa.test.People" p:id="666" p:name="sss">bean>
    beans>
    
    需要在类中有对应的set函数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    6.读取配置文件并注入

    //添加约束
    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    7.SpEL注入

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

    8.DI注入值

    简单值注入
    <property name="id" value="1">property>
    使用集合注入时
    <property name="tel">
    	<list>
        	<value>11111value>
            <value>11111value>
            <value>11111value>
        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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    9.注入其他bean

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

    10.bean的继承

    将公用的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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    动态内存开辟(上)
    大三第一周训练
    DevOps|乱谈开源社区、开源项目与企业内部开源
    C++: using 关键字
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-33-处理https 安全问题或者非信任站点-上篇
    deepin开发web前端:探索、挑战与无限可能
    restify框架
    Django-(7)
    接口自动化之测试数据动态生成并替换
    ebay、虾皮、Lazada、poshmark等跨境本土店群多账号如何做防关联
  • 原文地址:https://blog.csdn.net/g877835148/article/details/132809521