设为首页 加入收藏

TOP

day05-Spring管理Bean-IOC-03(三)
2023-07-25 21:42:27 】 浏览:97
Tags:day05-Spring 管理 Bean-IOC-03
ter public OrderService getOrderService() { return orderService; } //setter public void setOrderService(OrderService orderService) { this.orderService = orderService; } }

4.beans.xml:

  • autowire="byType"方式
<!--配置OrderDAO对象-->
<bean class="com.li.dao.OrderDAO" id="orderDAO"/>

<!--配置OrderService对象
    1. 属性 autowire="byType" 表示在创建OrderService时,
       通过类型的方式,给对象的属性自动完成赋值/引用
    2. 比如OrderService对象有private OrderDAO属性,就会在容器中找有没有OrderDAO类型的对象
       如果有,就会自动进行装配(按照类型的方式来装配时,那么该容器中不能有超过一个OrderService对象)
-->
<bean autowire="byType" class="com.li.service.OrderService" id="orderService"/>

<!--配置OrderServlet对象,同理-->
<bean autowire="byType" class="com.li.web.OrderServlet" id="orderServlet"/>
  • 使用autowire="byName"方式
<!--配置OrderDAO对象-->
<bean class="com.li.dao.OrderDAO" id="orderDAO"/>

<!--配置OrderService对象
   3.如果设置的是 autowire="byName" 表示通过名字完成自动装配
     比如下面的 autowire=" byName" class="com.li.service.OrderService"
    (1)spring会按照 OrderService对象的属性(如orderDAO)
    (2)找到这个属性的setXxx()方法的Xxx名称,在容器中找到相同id的对象来进行自动装配
    (3)例如我们的orderService对象中有一个setOrderDAO(),就会找id="orderDAO"的对象来进行自动装配
    (4)如果没有就装配失败
-->
<bean autowire="byName" class="com.li.service.OrderService" id="orderService"/>

<!--配置OrderServlet对象,同理-->
<bean autowire="byName" class="com.li.web.OrderServlet" id="orderServlet"/>

注意:autowire="byName"不是通过对象属性名来找到要自动装配的对象的,而是通过setXxx方法的名称来找,因为底层是反射实现的。因此如果对象的属性的setXxx方法的名称改变了,被自动装配的对象id也要随之改变

5.测试类:

//基于XML的bean自动装配
@Test
public void setBeanByAutowire() {
    ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
    OrderServlet orderServlet = ioc.getBean("orderServlet", OrderServlet.class);
    //验证是否自动装配上了OrderService
    System.out.println(orderServlet.getOrderService());
    //验证是否自动装配上了OrderDAO
    System.out.println(orderServlet.getOrderService().getOrderDAO());
}

可以看到orderServlet的orderService属性,以及属性的属性orderDAO成功装载了:(autowire="byType"/"byName"方式)

image-20230118193845625

2.19Spring EL表达式

非重点,了解即可

  1. Spring Expression Language,Spring表达式语言,简称SpEL。支持运行时查询并可以操作对象。
  2. 和 JSP的EL表达式一样,SpEL根据Javabean风格的getXxx()、setXxx()方法定义的属性访问对象
  3. SpEL使用#{}作为定界符,所有在大括号中的字符都将被认为是SpEL表达式

应用实例

SpELBean:

package com.li.bean;

/**
 * @author 李
 * @version 1.0
 */
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 = crySou
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Arrays类 下一篇学习笔记——Spring声明式事务管..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目