美文网首页
Spring的spel

Spring的spel

作者: _FireFly_ | 来源:发表于2020-11-16 11:09 被阅读0次
1.bean的"继承"---->模板的感觉
        几个不同的bean引用了同样的一些bean
        Room  Person
            Computer1
            Computer2
            Computer3
        设计一个模板的bean对象
        <bean id="" class="" abstract="true"> 当做模板使用 不能被创建
            <property name="c1" ref="c1">
            <property name="c2" ref="c2">
            <property name="c3" ref="c3">
        一下的正常bean对象中就可以直接引入模板bean了
        <bean id="" class="" parent="模板id">
    2.在beans标签中
        <beans
            default-lazy-init="true" default-autowire="byName">
            <bean lazy-init="false">
            <bean>
        </beans>
    3.如何在核心文件中引入外部的properties文件
        命名空间的标签
        <context:property-placeholder loaction="classpath:xxx.properties"></>
        可以在某一个bean中直接使用外部文件中的内容
        <bean id="" class="" p:name="${key}">
        

    ===============================================================================

    EL(JSP的时候学过)
    Expression  Language
    表达式语言   
        String value = request.getParameter("key");
        String value = (String)request.getAttribute("key");
        if(value!=null){
            拿来使用
        }
    ${} 帮助JSP进行域对象中取值操作
        做一些简单的算术运算 逻辑运算 比较运算 等等

    =====================================================================

    SpringEL
    SpEL    Spring Expression Language
    语法结构#{}
    也能取值  需要外部的文件  类似上面刚讲过的properties  ${key}
    
    #{}
    Spring管理对象的DI注入
        1.管理对象属性的注入  基本类型 int float boolean String
            #{'zzt'}  #{123}  #{123.45}  #{true}
        2.赋值同时做一些运算
            算术  + - * / %都没有问题  ^Java是位运算 ^Spring是幂运算
            比较  > >= < <= != == gt ge lt le ne eq
            逻辑  没有与符号  ||  !    and or not
        3.赋值的时候可能遇到对象形式
            #{beanID}
        4.可以操作对象的属性
            #{beanID.属性名}
        5.可以操作对象方法
            #{beanID.方法名()}
        6.可以引入静态常量
            #{2 * T(java.lang.Math).PI}

Base

public class Base {

    private Computer computer1;
    private Computer computer2;
    private Computer computer3;

    public Base(Computer computer1, Computer computer2, Computer computer3) {
        this.computer1 = computer1;
        this.computer2 = computer2;
        this.computer3 = computer3;
    }

    public Base() {
    }

    public Computer getComputer1() {
        return computer1;
    }

    public void setComputer1(Computer computer1) {
        this.computer1 = computer1;
    }

    public Computer getComputer2() {
        return computer2;
    }

    public void setComputer2(Computer computer2) {
        this.computer2 = computer2;
    }

    public Computer getComputer3() {
        return computer3;
    }

    public void setComputer3(Computer computer3) {
        this.computer3 = computer3;
    }
}

Computer

public class Computer {

    private String name;
    private int size;
    private Float price;
    private boolean status;
    private Logo logo;//聚合一个对象

    public Computer(String name, int size, Float price, boolean status, Logo logo) {
        this.name = name;
        this.size = size;
        this.price = price;
        this.status = status;
        this.logo = logo;
    }

    @Override
    public String toString() {
        return "Computer{" +
                "name='" + name + '\'' +
                ", size=" + size +
                ", price=" + price +
                ", status=" + status +
                ", logo=" + logo +
                '}';
    }

    public String getName() {
        return name;
    }

    public int getSize() {
        return size;
    }

    public Float getPrice() {
        return price;
    }

    public boolean isStatus() {
        return status;
    }

    public Logo getLogo() {
        return logo;
    }
}

Logo

public class Logo {

    private String name;
    private String color;

    public Logo(String name, String color) {
        this.name = name;
        this.color = color;
    }

    @Override
    public String toString() {
        return "Logo{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                '}';
    }

    public String test(){
        System.out.println("logo对象中的测试方法");
        return "testLogo";
    }

    public String getName() {
        return name;
    }
}

Person

public class Person {

    private Computer computer1;
    private Computer computer2;
    private Computer computer3;

    public Person(Computer computer1, Computer computer2, Computer computer3) {
        this.computer1 = computer1;
        this.computer2 = computer2;
        this.computer3 = computer3;
    }

    public Person() {
    }

    @Override
    public String toString() {
        return "Person{" +
                "computer1=" + computer1 +
                ", computer2=" + computer2 +
                ", computer3=" + computer3 +
                '}';
    }

    public Computer getComputer1() {
        return computer1;
    }

    public void setComputer1(Computer computer1) {
        this.computer1 = computer1;
    }

    public Computer getComputer2() {
        return computer2;
    }

    public void setComputer2(Computer computer2) {
        this.computer2 = computer2;
    }

    public Computer getComputer3() {
        return computer3;
    }

    public void setComputer3(Computer computer3) {
        this.computer3 = computer3;
    }
}

Room

public class Room {

    private Computer computer1;
    private Computer computer2;
    private Computer computer3;

    public Room(Computer computer1, Computer computer2, Computer computer3) {
        this.computer1 = computer1;
        this.computer2 = computer2;
        this.computer3 = computer3;
    }

    public Room() {
    }

    @Override
    public String toString() {
        return "Room{" +
                "computer1=" + computer1 +
                ", computer2=" + computer2 +
                ", computer3=" + computer3 +
                '}';
    }

    public Computer getComputer1() {
        return computer1;
    }

    public void setComputer1(Computer computer1) {
        this.computer1 = computer1;
    }

    public Computer getComputer2() {
        return computer2;
    }

    public void setComputer2(Computer computer2) {
        this.computer2 = computer2;
    }

    public Computer getComputer3() {
        return computer3;
    }

    public void setComputer3(Computer computer3) {
        this.computer3 = computer3;
    }
}

test.properties

name=ThinkPad
price=10000

ApplicationContext.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:context="http://www.springframework.org/schema/context" xmlns:c="http://www.springframework.org/schema/c"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"

>

    <!--<bean id="c1" class="domain.Computer" scope="singleton" lazy-init="true"></bean>-->
    <!--<bean id="c2" class="domain.Computer"></bean>-->
    <!--<bean id="c3" class="domain.Computer"></bean>-->

    <!--<bean id="base" class="domain.Base" p:computer1-ref="c1" p:computer2-ref="c2" p:computer3-ref="c3" abstract="true"></bean>-->

    <!--<bean id="room" class="domain.Room" parent="base"></bean>-->
    <!--<bean id="person" class="domain.Person" parent="base"></bean>-->

    <!--&lt;!&ndash;==================================================================&ndash;&gt;-->
    <!--&lt;!&ndash;通过如下这一行引入了一个外部的properties文件&ndash;&gt;-->
    <!--<context:property-placeholder location="classpath:test.properties"></context:property-placeholder>-->

    <!--<bean id="computer" class="domain.Computer">-->
        <!--<property name="name" value="${name}"></property>-->
        <!--<property name="price" value="${price}"></property>-->
    <!--</bean>-->

    <!--===================================================================-->

    <bean id="logo" class="domain.Logo" c:name="ThinkPad" c:color="White"></bean>
    <bean id="computer" class="domain.Computer">
        <constructor-arg name="name" value='#{logo.test()}'></constructor-arg>
        <constructor-arg name="size" value="#{10}"></constructor-arg>
        <constructor-arg name="price" value="#{2 * T(java.lang.Math).PI}"></constructor-arg>
        <constructor-arg name="status" value="#{not (1>2)}"></constructor-arg>
        <!--<constructor-arg name="logo" ref="logo"></constructor-arg>-->
        <constructor-arg name="logo" value="#{logo}"></constructor-arg>
    </bean>
</beans>

相关文章

网友评论

      本文标题:Spring的spel

      本文链接:https://www.haomeiwen.com/subject/uemabktx.html