首页 > 其他分享 >Spring配置和依赖注入

Spring配置和依赖注入

时间:2023-04-08 18:56:23浏览次数:24  
标签:xml 依赖 String Spring private address public 注入

Spring配置

别名

<!--    如果添加了别名,我们也可以使用其获取到这个对象-->
    <alias name="user" alias="gg"/>

Bean的配置

<!--    name也是别名,可以取多个-->
    <bean id="userT" class="com.kuang.pojo.UserT" name="userT2 u,u1;u2" >
        <property name="name" value="sanni"/>
    </bean>

import

一般用于团队开发使用,它可以将多个配置文件导入合并为一个
假设现在项目中有多个人开发,这三人复制不同的类开发,不同的类需要注册在不同的bean中,我们可以利用import将所有人的beans.xml合并为一个总的!(当导入时出现id相同状况时,相同id相同内容合并,相同id不同内容后来居上覆盖)

  • applicationContext.xml
<import resource="beans.xml"/>
<import resource="beans2.xml"/>
<import resource="beans3.xml"/>

依赖注入

构造器注入

Set方法注入

  • 依赖注入本质是Set注入
    • 依赖:bean对象的创建依赖于容器
    • 注入:bean对象中的所有属性,由容器来注入
  • 环境搭建
    1.复杂类型
    public class Address {
        private String address;
    
        public String getAddress(){
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    
    2.真实测试对象
    public class Student {
        private String name;
        private Address address;
        private String[] books;
        private List<String> hobbies;
        private Map<String,String> card;
        private Set<String> games;
        private String wife;
        private Properties info;
    }
    
    3.beans.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        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">
    <!--使用spring来创建对象,在spring这些都称为bean-->
    <!--  1,下标赋值 2参数类型string,不建议使用   -->
        <bean id="address" class="com.gy.pojo.Address">
            <property name="address" value="西安"/>
        </bean>
    
        <bean id="student" class="com.gy.pojo.Student">
    <!--        第一种,普通值注入,value-->
            <property name="name" value="alice"/>
            <!--第二种,Bean注入,ref-->
            <property name="address" ref="address"/>
            <!--数组注入-->
            <property name="books">
                <array>
                    <value>红楼梦</value>
                    <value>西游记</value>
                    <value>水浒传</value>
                    <value>三国演义</value>
                </array>
            </property>
            <!--List-->
            <property name="hobbies">
                <list>
                    <value>听歌</value>
                    <value>敲代码</value>
                    <value>看电影</value>
                </list>
            </property>
            <!--MAP-->
            <property name="card">
                <map>
                    <entry key="身份证" value="111111200011111111"/>
                    <entry key="银行卡" value="1111111111111111111"/>
                </map>
            </property>
            <!--set-->
            <property name="games">
                <set>
                    <value>LOL</value>
                    <value>CS</value>
                </set>
            </property>
            <!--NULL-->
            <property name="wife">
                <null/>
            </property>
            <!--properties-->
            <property name="info">
                <props>
                    <prop key="学号">18100101120</prop>
                    <prop key="性别">女</prop>
                    <prop key="姓名">耿耿</prop>
                </props>
            </property>
        </bean>
    </beans>
    
    4.测试类
    public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Student student = (Student) context.getBean("student");
        System.out.println(student.toString());
    //        Student{
    //        name='alice',
    //        address=Address{address='西安'},
    //        books=[红楼梦, 西游记, 水浒传, 三国演义],
    //        hobbies=[听歌, 敲代码, 看电影],
    //        card={身份证=111111200011111111,
    //        银行卡=1111111111111111111},
    //        games=[LOL, CS], wife='null',
    //        info={学号=18100101120, 性别=女, 姓名=耿耿}}
        }
    }
    

扩展方式注入

我们可以使用p命令空间和c命令空间进行注入,需要导入xml约束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
   <!--使用spring来创建对象,在spring这些都称为bean-->
    <!--p命名空间注入,可以直接注入属性的值:properties-->
    <!--p命名就是set方式注入,需要无参构造和set方法,c命名就是构造器注入,需要有参构造-->
    <bean id="user" class="com.gy.pojo.User" p:name="alice" p:age="22"/>
    <bean id="user2" class="com.gy.pojo.User" c:age="18" c:name="gy"/>
</beans>

Bean的作用域

1.单例模式(SPRING默认机制)

<bean id="user2" class="com.gy.pojo.User" c:age="18" c:name="gy" scope="singleton"/>

2.原型模式(prototype):每次从容器中get的时候,都会产生一个新对象。有些情况下所有线程要共享一个对象,对这个对象进行修改,那另一个线程过来也要修改,有两种方式,加锁和原型模式
3.其余的request、session、application只能在web开发使用

标签:xml,依赖,String,Spring,private,address,public,注入
From: https://www.cnblogs.com/gyViolet/p/17299011.html

相关文章

  • 基于墨者靶场报错盲注分析SQL注入之报错盲注
    报错注入是利用了数据库的某些机制,人为的制造错误条件,是的查询结果能够出现在错误信息中。有xpath语法错误xpath语法错误利用xpath语法错误进行报错注入时利用了extractvlue与updatexml两个函数。使用条件:nysql版本大于5.1.5extractvalue函数原型:extractvalue(xml_document,Xpath......
  • Java的jar包依赖版本冲突解决
    参考:https://blog.csdn.net/weixin_38898423/article/details/128178055https://blog.csdn.net/Yal_insist/article/details/127669985一、依赖冲突不同的第三方jar包可能同时对某一个jar包的不同版本含有依赖,但是Maven解析pom.xml文件时,同一个jar包只会保留一个Maven默认处理策略......
  • Spring Cloud Consul简介
    SpringCloudConsul通过自动配置和绑定到SpringEnvironment和其他Spring编程模型习惯用法,为SpringBoot应用程序提供Consul集成。通过一些简单的注释,您可以快速启用和配置应用程序中的常见模式,并使用Hashicorp的Consul构建大型分布式系统。提供的模式包括服务发现、分布式配置和......
  • 依赖倒置原则
    依赖倒置原则/***依赖倒置原则(DIP)*TV(打开之前,)就可以控制灯的开关状态*高方法,实现前,必须实现低方法,执行入库前,记录日历*/publicclassdipTest{//定义一个接口:开关publicinterfaceSwitchable{voidturnOn();voidturnOff();}publicst......
  • SpringMVC
    1.MVCMVC:是模型(Model)视图(View)控制器(Controller)的简写,是一种软件设计规范将业务逻辑,数据和显示分离MVC是一种架构模式模型(dao,service):数据模型,提供要展示的数据,包含数据和行为视图(jsp):负责进行数据的展示控制器(servlet):接收用户的请求,委托给模型进行处理1.1SpringMVC框......
  • spring——bean初始化过程解析
         ......
  • springCloud之Consul简介
    Consul是什么Consul是HashiCorp公司推出的开源工具。HashiCorpConsul是一种服务网络解决方案,使团队能够管理服务之间以及跨预处理和多云环境和运行时的安全网络连接。Consul为网络基础设施设备提供服务发现、服务网格、流量管理和自动更新。您可以单独使用这些功能,也可以在单个C......
  • Spring源码系列一:入门——Hello World
    前言讲解Spring之前,我们首先梳理下Spring有哪些知识点可以进行入手源码分析,比如:SpringIOC依赖注入SpringAOP切面编程SpringBean的声明周期底层原理Spring初始化底层原理SpringTransaction事务底层原理HelloWorld通过这些知识点,后续我们慢慢在深入Spring的使用及原......
  • SpringBoot项目学习总结
    1.项目包结构一共有6个包,common包下的主要是常量和返回结果的结构。2.创建实体类将sql语句复制过来,按住ALT+鼠标左键竖直选中删除,按HOME和END到所有行的头和尾同时编辑。3.三层开发规范分别是Controller/Service/Dao,顺序:前端浏览器->Controller->Service(接口、实现类......
  • 依赖倒置
    依赖倒置原则是面向对象编程的一个重要原则之一,它指出高层模块不应该依赖于底层模块,它们应该都依赖于抽象的接口。而抽象的接口不应该依赖于具体实现,具体实现应该依赖于抽象的接口。下面是一个简单的基于Python的依赖倒置示例:pythonfromabcimportABC,abstractmethod......