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表达式的使用加代码合集_第1张图片

文章目录

  • spring通过文件属性注入bean和基于xml的bean的自动装配以及spring-eel表达式的使用加代码合集
    • 通过属性文件给 bean 注入值
      • src/ 创建 my.properties
      • 配置beans.xml
      • 完成测试
    • 基于 XML 的 bean 的自动装配
      • OrderDao
      • OrderService
      • OrderAction
      • 配置beans.xml
    • spring eel 表达式
      • SpELBean.java
      • 配置beans.xml
      • 测试
    • 总结

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编码-> 使用工具


配置Monster对象

1.通过属性文件给monster对象的属性赋值
2. 这时我们的属性值通过${属性名}
3. 这里说的 属性名 就是 my.properties文件中的 k=v 的k


    
    
    
        
        
        
    

完成测试

  @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

public class OrderService {
    //OrderDao属性
    private OrderDao orderDao;

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

OrderAction

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) 如果没有就装配失败

    
    
    
    

    
    

spring eel 表达式

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

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

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

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

SpELBean.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的属性赋值


    
        
        
        
        
        
        
        
        
        
        
        
        
    

测试

 //通过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连支持一下,创造不易您们的支持是我的动力

你可能感兴趣的:(#,spring,spring,xml,java,后端,spring,boot,log4j,struts)