Spring配置详解

2023-05-16

Spring配置详解

1.     配置bean元素 基本属性

<!--
        配置bean元素
        name:给对象起个名字
        class 类的完整路径
        id  唯一   里面不初选特殊字符 struts“/sadfAction” ·
        -->
        <bean name="user" class="cn.hd.test.User" id="user"></bean>

2.创建方式

<!--scope对象的创建方式
           singleton 单例模式(默认)
        prototype   多例模式(什么时候用什么时候创建 并且创建的方式每次重新new )
        
        了解  不用
        request  web环境下 对象的生命周期和request一样
        session  web环境下 对象的生命周期和session一样
        -->

一般情况下全都用默认的

多例模式 在整合struts2的时候必须用多例模式

3.创建生命周期的方法

在对象创建后马上就执行一个方法,对象销毁前执行一个方法

<bean name="user" class="cn.hd.test.User" id="user" init-method="init" destroy-method="destroy"></bean>

在这个user类中 书写init和destroy方法


测试,可以手动的去销毁对象  调用ClassPathXmlApplicationContext的close  

注意:销毁对象 对象必须是单例的 如果是多里的无法手动销毁  

4.Spring创建对象的方式  


(1)无参数的构造函数(重点使用)  

(2)静态工厂实例化  
<bean name="userFactory" class="cn.hd.test.UserFactory" factory-method="createUser"></bean>

并且创建一个UserFactory该类中提供一个静态createUser


public static User createUser(){
        System.out.println("调用了静态工厂");
        return new User();
    }

(1)实例化工厂创建  
<bean name="userFactory1" class="cn.hd.test.UserFactory"></bean>
<bean name="user1" factory-bean="userFactory1" factory-method="createUser1"></bean>


public User createUser1(){
        System.out.println("实例化工厂");
        return new User();
}

对象属性的注入

(1)     get-set注入(最重要的)

基本属性  8打基础类型

<bean name="car" class="cn.hd.injection.Car">
             <property name="name" value="小鸟电动车"></property>
             <property name="color" value="红色"></property>

         </bean>

name  类属性名  value属性值

 

 

引用属性  对象


<bean name="user" class="cn.hd.injection.User">
                 <property name="name" value="赵塞昌"></property>
                 <property name="age" value="13"></property>
                 <property name="car" ref="car"></property>
         </bean>

name 类的属性名   ref 引用的bean 的name

(2)     构造函数注入

  <bean name="user1" class="cn.hd.injection.User">
             <constructor-arg name="name" value="李超杰" index="0" type="java.lang.String"></constructor-arg>
             <constructor-arg name="age" value="18" index="1"></constructor-arg>
         </bean>

  name    value (ref)      index         type

  属性     具体的值         参数的位置    参数的类型


  

(3)     p’空间注入(最简单)但是 业界不认可  还是使用<property>

第一步导入约束

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

<bean name="user2" class="cn.hd.injection.User" p:age="12" p:name="赵傻强" p:car-ref="car"></bean

(4)   spel注入类似于El和ognl表达式    

<bean name="user3" class="cn.hd.injection.User">
        <property name="name" value="#{user2.name}"></property>
        <property name="car" value="#{car}"></property>
</bean>

复杂类型的注入

数组

Arr

<bean name="collectionBean" class="cn.hd.injection.CollectionBean">
       <!--数组中的元素只有一个那么它的配置和基本类型一样-->

多个数据

  <!-- <property name="arr" value="1"></property>-->
       <property name="arr">
           <array>
               <value>赵四</value>
               <value>赵五</value>
               <ref bean="car"></ref>
           </array>
       </property>
</bean>
CollectionBean collectionBean = (CollectionBean) ac.getBean("collectionBean");
        Object[]arr=collectionBean.getArr();
        for (Object o:arr){
            System.out.println(o);

List / set

  <!--list集合中只有一个元素配置和基本类型一样-->
       <!--<property name="list" value="1"></property>-->
        <property name="list">
            <list>
                <value>李四</value>
                <value>李五</value>
                <ref bean="user1"></ref>
            </list>
        </property>
CollectionBean collectionBean = (CollectionBean) ac.getBean("collectionBean");
        List list=collectionBean.getList();
        for (Object o:list){
            System.out.println(o);

map

键值对 key key-ref  value  value-ref Map<k,v>

<property name="map">
            <map>
                <entry key="name" value="赵二"></entry>
                <entry key="user" value-ref="user2"></entry>
                <!--<entry key="user" key-ref="" ></entry>-->
CollectionBean collectionBean = (CollectionBean) ac.getBean("collectionBean");
        Map map = collectionBean.getMap();
        String name = (String) map.get("name");
        System.out.println(name);
        User user = (User) map.get("user");
        System.out.println(user);

Properties

<property name="properties">
            <props>
                <prop key="driverClass">com.sun</prop>
                <prop key="jdbcUrl">jdbc://localhost:3306/...</prop>
                <prop key="user">root</prop>
            </props>
        </property>

模块化

<import resource="classpath:applicationContext.xml"></import>

resource 其他配置文件的地址










    






























本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring配置详解 的相关文章

随机推荐

  • android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析

    hi xff0c 同学们大家好 xff01 1 Configuration应用开发背景 今天要给大家分享内容就是我们应用开发时候经常会遇到问题 xff0c 那就是如果系统一些属性变化了 xff0c 比如语言 xff0c 横竖屏幕 xff0c
  • QT 线程,实现生产者-消费者模式

    一 两种启动线程方式 xff1a 1 QThread 2 QObject moveToThread 函数 可以让 调用者的 槽中的代码 xff0c 在单独的线程执行 注 xff1a 如果该对象有 父对象 xff0c 那么它无法被移动 二 线
  • 【easyui学习笔记】3.easyui布局之边框布局

    学习参考 xff1a EasyUI 为网页创建边框布局 建设稍微实用点的界面都离不开布局 xff08 layout xff09 xff0c 我们先来了解最简单的一种布局 xff1a 边框布局 xff08 border layout xff0
  • Android的四种启动模式以及onNewIntent方法

    前言 想起来写这个是因为之前在开发过程中遇到在onStart 方法中使用getIntent 方法无法获取到启动activity时传入的数据 xff0c 也是纳闷了很久 xff0c 然后就决定好好看一下这个地方 xff0c 本文章会结合简单的
  • selenium webdriver 页面css和xpath定位

    对于html来说 xff0c 不管用什么浏览器打开 xff0c 他的架构是不变的 xff0c 所以对于编写自动化测试程序来说 xff0c 基于什么浏览器开发 xff0c 差异不大 xff0c 所以这里推荐使用chrome 65或以后版本浏览
  • Ubuntu 18.04 +Nvidia gtx 1650 显卡驱动安装

    1 Adding this PPA to your system You can update your system with unsupported packages from this untrusted PPA by adding
  • 详解https请求Nginx转发tomcat变成http问题

    概述 分享一个最近处理的nginx转发问题 xff0c 简单记录下 一 问题现象 简单架构为nginx做负载均衡 xff0c 后端用tomcat做容器 浏览器和 Nginx 之间走的 HTTPS 通讯 xff0c 而 Nginx 到 Tom
  • Zookeeper启动出现闪退问题解决

    1 检查环境变量是否配置了JAVA HOME xff0c 若是没有配置 xff0c 需配置才可以 xff08 由于zkEnv cmd文件中使用了JAVA HOME xff09 2 打开zkEnv cmd文件 xff0c 加上pause xf
  • WIN10下全新的部署和映像处理工具DISM

    DISM xff08 Deployment Image Servicing and Management xff09 就是部署映像服务和管理 DISM exe 用于安装 卸载 配置和更新脱机 Windows R 映像和脱机 Windows
  • 富文本显示不全自动省略

    使用富文本时 xff0c 文字一行 xff08 n行 xff09 显示不全 xff0c 末尾文字省略 简介 CGSize maxSize 61 CGSizeMake MAX MAXFLOAT 调整行间距 NSMutableParagraph
  • 普通用户安装管理Keepalived

    普通用户安装管理Keepalived 介绍安装授权给普通用户修改配置文件keepalived 配置检测脚本配置普通用户启动keepalived 介绍 负载均衡 Load Balance xff0c 简称LB 是一种服务或基于硬件设备等实现的
  • Arch Linux 安装小记

    Arch Linux 安装小记 这只是一篇随笔 xff0c 用来记录从全新安装 Arch Linux 开始 xff0c 到在使用过程中各种软件配置的过程 其实对于 Arch Linux 这样滚动更新的 Linux xff0c 很少需要重新安
  • Java Collections的min和max方法

    方法一 public static lt T extends Object amp Comparable lt super T gt gt T min Collection lt extends T gt coll 此方法需要传入一个实现了
  • 【高效工作】Sublime Text 3 美化

    参考 xff1a 炫酷的sublime text3主题 准备一个良好的工作环境会让人更加乐于工作 xff0c 现代的程序猿都有一颗geek的心 xff0c 谁能忍受整天在一个丑陋的UI下coding xff1f xff01 所以今天就简单介
  • oom killer &lmkd killer

    目录 oom killer amp reaper task 进程内存回收 杀进程内存回收 lmkd killer psi vmpressure 事件通知 内核psi 实现 内核vmpressure oom killer amp reaper
  • O 上新增 TaskSnapshot

    任务快照 https source android google cn devices tech perf task snapshots examples and source android P https developer andro
  • 2021.08.29_Android_设备配置改变和Activity处理

    Android设备那些配置会改变 xff1f 34 mcc 34 IMSI 移动国家 地区代码 MCC 发生了变化 检测到了 SIM 并更新了 MCC 34 mnc 34 IMSI 移动网络代码 MNC 发生了变化 检测到了 SIM 并更新
  • arcolinux使用i3wm窗口管理器

    arcolinux使用i3wm窗口管理器 i3wm手册 安装i3 一条命令 sudo pacman S i3 然后在arcolinux里面自己选择窗口管理器 arcolinux的文件管理器默认是 dolphin Dolphin使用就是直接
  • 我的 archinstall 使用手册

    我的 archinstall 使用手册 1 使用放大字体 xff0c 保护你的眼睛 archlinux 里面 tty 默认的字体是非常小的 setfont usr share kbd consolefont LatGrkCyr 12x22
  • Spring配置详解

    Spring 配置详解 1 配置bean元素 基本属性 lt 配置bean元素 name xff1a 给对象起个名字 class 类的完整路径 id 唯一 里面不初选特殊字符 struts sadfAction gt lt bean nam