spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集

😀前言

本章是spring基于XML 配置bean系类中第7篇讲解spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集

🏠个人主页:尘觉主页

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名

⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5

⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰

如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • [🥰 spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集](#🥰 spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集)

🥰 spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集

😊通过属性文件给 bean 注入值

src/ 创建 my.properties

name=\u9EC4\u888D\u602A

id=10

skill=\u72EE\u5B50\u543C

配置beans.xml

  1. 先把这个文件修改成提示All Problem
  2. 提示错误,将光标放在context 输入alt+enter 就会自动引入namespace
  3. location="classpath:my.properties" 表示指定属性文件的位置
  4. 提示,需要带上 classpath
  5. 属性文件有中文,需要将其转为unicode编码-> 使用工具

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

配置Monster对象

1.通过属性文件给monster对象的属性赋值

  1. 这时我们的属性值通过${属性名}

  2. 这里说的 属性名 就是 my.properties文件中的 k=v 的k

XML 复制代码
<!--指定属性文件
     1. 先把这个文件修改成提示All Problem
     2. 提示错误,将光标放在context 输入alt+enter 就会自动引入namespace
     3. location="classpath:my.properties" 表示指定属性文件的位置
     4. 提示,需要带上 classpath
     5. 属性文件有中文,需要将其转为unicode编码-> 使用工具
     -->
    <context:property-placeholder location="classpath:my.properties"/>
    <!--配置Monster对象
    1.通过属性文件给monster对象的属性赋值
    2. 这时我们的属性值通过${属性名}
    3. 这里说的 属性名 就是 my.properties文件中的 k=v 的k
    -->
    <bean class="com.spring.bean.Monster" id="monster1000">
        <property name="monsterId" value="${monsterId}"/>
        <property name="skill" value="${skill}"/>
        <property name="name" value="${name}"/>
    </bean>

完成测试

java 复制代码
  @Test
    public void setBeanByFile() {

        ApplicationContext ioc =
                new ClassPathXmlApplicationContext("beans03.xml");

        Monster monster1000 = ioc.getBean("monster1000", Monster.class);
        System.out.println("monster1000=" + monster1000);

    }

😊基于 XML 的 bean 的自动装配

在 spring 的 ioc 容器,可以实现自动装配 bean

这里说的 Action 就是 Servlet->充当 Controller

OrderDao

public class OrderDao {

//方法。。。

public void saveOrder() {

System.out.println("保存 一个订单...");

}

}

OrderService

java 复制代码
public class OrderService {
    //OrderDao属性
    private OrderDao orderDao;

    //getter
    public OrderDao getOrderDao() {
        return orderDao;
    }
    //setter
    public void setOrderDao(OrderDao orderDao) {
        this.orderDao = orderDao;
    }
}

OrderAction

java 复制代码
public class OrderAction {
    //属性OrderService
    private OrderService orderService;

    //getter
    public OrderService getOrderService() {
        return orderService;
    }

    //setter
    public void setOrderService(OrderService orderService) {
        this.orderService = orderService;
    }
}

💫配置beans.xml

  1. autowire="byType" 表示 在创建 orderService时通过类型的方式 给对象属性 自动完成赋值/引用

  2. 比如OrderService 对象有 private OrderDao orderDao

  3. 就会在容器中去找有没有 OrderDao类型对象

  4. 如果有,就会自动的装配, 提示如果是按照 byType 方式来装配, 这个容器中,不能有两个 的OrderDao类型对象

  5. 如果你的对象没有属性, autowire就没有必要写

  6. 其它类推...

  7. 如果我们设置的是 autowire="byName" 表示通过名字完成自动装配

  8. 比如下面的 autowire="byName" class="com.wyxedu.spring.service.OrderService"

    1. 先看 OrderService 属性 private OrderDao orderDao

    2. 再根据这个属性的setXxx()方法的 xxx 来找对象id

    3. public void setOrderDao() 就会找id=orderDao对象来进行自动装配

    4. 如果没有就装配失败

XML 复制代码
    <!--配置OrderDao对象-->
    <bean class="com.spring.dao.OrderDao" id="orderDao"/>
    <!--配置OrderService对象
        1. autowire="byType" 表示 在创建 orderService时
           通过类型的方式 给对象属性 自动完成赋值/引用
        2. 比如OrderService 对象有 private OrderDao orderDao
        3. 就会在容器中去找有没有 OrderDao类型对象
        4. 如果有,就会自动的装配, 提示如果是按照 byType 方式来装配, 这个容器中,不能有两个
          的OrderDao类型对象
        5. 如果你的对象没有属性,  autowire就没有必要写
        6. 其它类推..

        7. 如果我们设置的是 autowire="byName" 表示通过名字完成自动装配
        8. 比如下面的 autowire="byName" class="com.spring.service.OrderService"
           1) 先看 OrderService 属性 private OrderDao orderDao
           2) 再根据这个属性的setXxx()方法的 xxx 来找对象id
           3) public void setOrderDao() 就会找id=orderDao对象来进行自动装配
           4) 如果没有就装配失败

    -->
    <bean autowire="byName" class="com.spring.service.OrderService"
          id="orderService"/>

    <!--配置OrderAction-->
    <bean autowire="byName" class="com.spring.web.OrderAction" id="orderAction"/>

😊spring eel 表达式

  1. Spring Expression Language,Spring 表达式语言,简称 SpEL。支持运行时查询并可以操作对象。

  2. 和 EL 表达式一样,SpEL 根据 JavaBean 风格的 getXxx()、setXxx()方法定义的属性访问对象

  3. SpEL 使用#{...}作为定界符,所有在大框号中的字符都将被认为是 SpEL 表达式。

  4. 不是重点,如果看到有人这样使用,能看懂即可

SpELBean.java

java 复制代码
public class SpELBean {

    private String name;
    private Monster monster;
    private String monsterName;
    private String crySound; //叫声
    private String bookName;
    private Double result;

    public SpELBean() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Monster getMonster() {
        return monster;
    }

    public void setMonster(Monster monster) {
        this.monster = monster;
    }

    public String getMonsterName() {
        return monsterName;
    }

    public void setMonsterName(String monsterName) {
        this.monsterName = monsterName;
    }

    public String getCrySound() {
        return crySound;
    }

    public void setCrySound(String crySound) {
        this.crySound = crySound;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public Double getResult() {
        return result;
    }

    public void setResult(Double result) {
        this.result = result;
    }

    //cry 方法会返回字符串
    public String cry(String sound) {
        return "发出 " + sound + "叫声...";
    }

    //read 返回字符串
    public static String read(String bookName) {
        return "正在看 " + bookName;
    }

    @Override
    public String toString() {
        return "SpELBean{" +
                "name='" + name + '\'' +
                ", monster=" + monster +
                ", monsterName='" + monsterName + '\'' +
                ", crySound='" + crySound + '\'' +
                ", bookName='" + bookName + '\'' +
                ", result=" + result +
                '}';
    }
}

配置beans.xml

通过spel给bean的属性赋值

XML 复制代码
<!-- spring el 表达式使用
     1. 通过spel给bean的属性赋值
     -->
    <bean id="spELBean" class="com.wyxedu.spring.bean.SpELBean">
        <!-- sp el 给字面量 -->
        <property name="name" value="#{'大家好'}"/>
        <!-- sp el 引用其它bean -->
        <property name="monster" value="#{monster01}"/>
        <!-- sp el 引用其它bean的属性值 -->
        <property name="monsterName" value="#{monster01.name}"/>
        <!-- sp el 调用普通方法(返回值)  赋值 -->
        <property name="crySound" value="#{spELBean.cry('喵喵的..')}"/>
        <!-- sp el 调用静态方法(返回值) 赋值 -->
        <property name="bookName" value="#{T(com.spring.bean.SpELBean).read('天龙八部')}"/>
        <!-- sp el 通过运算赋值 -->
        <property name="result" value="#{89*1.2}"/>
    </bean>

测试

java 复制代码
 //通过spring el 对属性赋值
    @Test
    public void setBeanBySpel() {

        ApplicationContext ioc =
                new ClassPathXmlApplicationContext("beans04.xml");
        
        SpELBean spELBean = ioc.getBean("spELBean", SpELBean.class);
        System.out.println("spELBean=" + spELBean);
    }

😄总结

本文讲解spring怎么通过通过文件属性注入bean讲解

和怎么基于xml的bean的自动装配的详细讲解

以及spring-eel表达式的使用加代码合集

spring基于XML 配置bean系类

第一篇-->怎么通过类型来获取 bean以及为什么可以通过构造器配置 bean

第二篇--> 怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象--ref和怎么去引用/注入内部 bean 对象

第三篇--> spring怎么去引用/注入集合/数组类型和 怎么通过 util 名称空间创建 list以及 怎么去通过级联属性赋值

第四篇-->spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象

第五篇-->spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解

第六篇-->spring-bean的生命周期和怎么配置spring-bean的后置处理器

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁

希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关推荐
爱的叹息11 分钟前
Java 集合框架中 `List` 接口及其子类的详细介绍,并用 UML 图表展示层次结构关系,用表格对比各个类的差异。
java·list·uml
lqstyle26 分钟前
面试必备之ThreadLocal
后端·面试
匆匆那年随风27 分钟前
Markdig:强大的 .NET Markdown 解析器详解
后端
惜鸟38 分钟前
SSE 协议的原理和使用方法
后端
qzw121039 分钟前
Java与Elasticsearch集成详解,以及使用指南
java·elasticsearch·jenkins
爱的叹息39 分钟前
分别用树型和UML结构展示java集合框架常见接口和类
java·开发语言·uml
马院代表人40 分钟前
Java入职篇(4)——git的使用
java·git·职场和发展
MariaH43 分钟前
初识计算机和 Java 语言
后端
涂瑷菡1 小时前
Bash语言的进程管理
开发语言·后端·golang
SaebaRyo1 小时前
如何优雅的更新你的npm包
前端·后端·npm