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>-->
<!--<!–==================================================================–>-->
<!--<!–通过如下这一行引入了一个外部的properties文件–>-->
<!--<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>
网友评论