技术标签: spring 继承与依赖 spring_bean之间的关系 Spring自动装配 bean属性配置
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijing" p:street="HuiLongGuan">
</bean>
<bean id="car" class="com.wul.spring.beans.autowire.Car"
p:brand="car" p:price="300000">
</bean>
<!--
1.可以使用autowire属性指定自动装配方式,byName根据bean的名字和当前bean的setter风格的属性名进行自动装配 ,
2.若有匹配的则进行自动装配,若没有匹配的,则不装配,值为null,不会出错.
3.上面的address和carid名必须和Person类中的属性名相同
-->
<bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" autowire="byName"></bean>
<!--
byType根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有1个以上的类型匹配的bean,
即其下假设还有一个Address类型的bean的话,其将无法分辨, 会出错
<bean id="address2" class="com.wul.spring.beans.autowire.Address"
p:city="Beijing" p:street="HuiLongGuan">
</bean>
-->
<bean id="person2" class="com.wul.spring.beans.autowire.Person"
p:name="wul2" autowire="byType"></bean>
3.construction(通过构造器自动装配):当Bean中存在多个构造器时,此种自动装配方式将会很复杂,不推荐使用
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijiang^" p:street="WuDaoKou">
</bean>
<!-- bean配置的继承:使用bean的parent属性指定继承哪个bean的配置 -->
<bean id="address2" parent="address"></bean>
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijiang^" p:street="WuDaoKou">
</bean>
<!-- bean配置的继承:使用bean的parent属性指定继承哪个bean的配置 -->
<bean id="address2" p:city="Beijing" p:street="DaZhongSi" parent="address"></bean>
address2里对应的bean中city和street属性会覆盖父类bean中的属性为Beijing和DaZhongSi。
<!-- 抽象bean:bean的abstract属性为true的bean,这样的bean不能被IOC容器实例化,只能用来被继承配置,
若某一个bean的class属性没有指定,则该bean必须是一个抽象bean
-->
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijiang^" p:street="WuDaoKou" abstract="true">
</bean>
<bean id="address2" parent="address"></bean>
<bean id="address"
p:city="Beijiang^" p:street="WuDaoKou" abstract="true">
</bean>
<bean id="address2" class="com.wul.spring.beans.relations.Address2"
parent="address"></bean>
<!-- 要求在配置Person时,必须有一个关联的car!换句话说,person这个bean依赖于Car这个bean -->
<bean id="car" class="com.wul.spring.beans.autowire.Car"
p:brand="Audi" p:price="300000"></bean>
<bean id="addressdepend" class="com.wul.spring.beans.autowire.Address"
p:city="shanghai" p:street="nanjinglu"></bean>
<bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" p:address-ref="addressdepend" depends-on="car"></bean>
</beans>
<bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" p:address-ref="addressdepend" p:car-ref="car" depends-on="car"></bean>
package com.wul.spring.beans.autowire;
public class Address {
private String city;
private String street;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
@Override
public String toString() {
return "Address [city=" + city + ", street=" + street + "]";
}
}
package com.wul.spring.beans.autowire;
public class Car {
private String brand;
private double price;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", price=" + price + "]";
}
}
package com.wul.spring.beans.autowire;
public class Person {
private String name;
private Address address;
private Car car;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Person [name=" + name + ", address=" + address + ", car=" + car
+ "]";
}
}
<?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijing" p:street="HuiLongGuan">
</bean>
<bean id="car" class="com.wul.spring.beans.autowire.Car"
p:brand="car" p:price="300000">
</bean>
<!-- <bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" p:address-ref="address" p:car-ref="car"></bean> -->
<!-- 可以使用autowire属性指定自动装配方式,byName根据bean的名字和当前bean的setter风格的属性名进行自动装配 ,
若有匹配的则进行自动装配,若没有匹配的,则不装配,值为null,不会出错.
上面的address和carid名必须和Person类中的属性名相同-->
<bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" autowire="byName"></bean>
<!--
byType根据bean的类型和当前bean的属性的类型进行自动装配,若IOC容器中有1个以上的类型匹配的bean,
即其下假设还有一个Address类型的bean的话,其将无法分辨, 会出错
<bean id="address2" class="com.wul.spring.beans.autowire.Address"
p:city="Beijing" p:street="HuiLongGuan">
</bean>
-->
<bean id="person2" class="com.wul.spring.beans.autowire.Person"
p:name="wul2" autowire="byType"></bean>
</beans>
package com.wul.spring.beans.autowire;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) ctx.getBean("person");
System.out.println(person);
Person person2 = (Person) ctx.getBean("person2");
System.out.println(person2);
}
}
<?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<!--
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijiang^" p:street="WuDaoKou">
</bean>
bean配置的继承:使用bean的parent属性指定继承哪个bean的配置
<bean id="address2" p:city="Beijing" p:street="DaZhongSi" parent="address"></bean>
-->
<!-- 抽象bean:bean的abstract属性为true的bean,这样的bean不能被IOC容器实例化,只能用来被继承配置,
若某一个bean的class属性没有指定,则该bean必须是一个抽象bean
<bean id="address" class="com.wul.spring.beans.autowire.Address"
p:city="Beijiang^" p:street="WuDaoKou" abstract="true">
</bean>
<bean id="address2" parent="address"></bean>
-->
<!-- 也可以忽略父Bean的class属性,让子Bean指定自己的类,而共享相同的属性配置,但此时abstract必须为true -->
<bean id="address"
p:city="Beijiang^" p:street="WuDaoKou" abstract="true">
</bean>
<bean id="address2" class="com.wul.spring.beans.relations.Address2"
parent="address"></bean>
<!-- 要求在配置Person时,必须有一个关联的car!换句话说,person这个bean依赖于Car这个bean -->
<bean id="car" class="com.wul.spring.beans.autowire.Car"
p:brand="Audi" p:price="300000"></bean>
<bean id="addressdepend" class="com.wul.spring.beans.autowire.Address"
p:city="shanghai" p:street="nanjinglu"></bean>
<!-- <bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" p:address-ref="addressdepend" depends-on="car"></bean> -->
<bean id="person" class="com.wul.spring.beans.autowire.Person"
p:name="wul" p:address-ref="addressdepend" p:car-ref="car" depends-on="car"></bean>
</beans>
package com.wul.spring.beans.relations;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.wul.spring.beans.autowire.Address;
import com.wul.spring.beans.autowire.Car;
import com.wul.spring.beans.autowire.Person;
public class MainRelations {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml");
// Address address = (Address) ctx.getBean("address");
// System.out.println(address);
// Address address2 = (Address) ctx.getBean("address2");
// System.out.println(address2);
Address2 address3 = (Address2) ctx.getBean("address2");
System.out.println(address3);
Person person = (Person) ctx.getBean("person");
System.out.println(person);
}
}
文章浏览阅读604次,点赞10次,收藏8次。自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
文章浏览阅读2k次。下面是总结的详细配置步骤,分享给大家。一、VNC远程控制CentOS系统1、查看CentOS系统中是否有安装vnc(默认安装)输入命令:rpm -q vnc vnc-server如果显示结果为:package vnc is not installedvnc-server-4.1.2-14.e15_3.1说明你机器上已经安装了vnc。如果没有,可以在centOS的软件_centos如何用vnc
文章浏览阅读4.8k次,点赞17次,收藏9次。datax的使用以及参数解释,快速入门版_datax 参数
文章浏览阅读1w次,点赞13次,收藏79次。下面我们将会通过一个小案例——猜数字游戏,来直观地感受一下如何让JavaScript完成任务。设计要求假设你的老板给你布置了以下游戏设计任务要求:我想让你开发一个猜数字游戏。游戏应随机选择一个 100 以内的自然数, 然后邀请玩家在 10 轮以内猜出这个数字。每轮后都应告知玩家的答案正确与否,如果出错了,则告诉他数字是低了还是高了。并且应显示出玩家前一轮所猜的数字。一旦玩家猜对,或者用尽所有机会,游戏将结束。游戏结束后,可以让玩家选择再次开始。看到这个要求,首先我们要做的是将其分解成简单的可操作_javascript猜数字游戏
文章浏览阅读884次,点赞25次,收藏20次。在Java中,全局变量和局部变量的概念通常与类变量(有时被认为是全局变量)和方法内的变量(局部变量)相关联。虽然Java本身没有全局变量的概念,但类的静态变量经常被用作全局变量。
文章浏览阅读1.1k次。配置过程分析:1: . ./build/envsetup.shincluding device/samsung/smdkv210/vendorsetup.sh------------------------------------------------------------------build/envsetup.sh末尾有:# Execute the contents o_export build_target 還原
文章浏览阅读1.2k次。HDOJ题目地址:传送门单词数Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 44934 Accepted Submission(s): 10992Problem Descr_java acm单词数问题 #结束
文章浏览阅读9.5k次。方式一:实验证明,在根目录下新建custom-tab-bar目录,在目录中新建index.vue是行不通的,vue文件不会被编译方式二:将小程序四大法宝(wxss,json,wxml,js)直接搬过来,虽然tabbar有渲染在小程序上了,但是切换是没有效果的,所以还是行不通方式三(行得通)经过上面的两个尝试,还是乖乖的以vue的做法吧,用单页面的形式,通过v-show控制组件的隐藏和显示注意:v-show有时没有效果,因为v-show是通过display:none来控制的,它的权重没_uniapp custom-tab-bar
文章浏览阅读1.3k次。我们用树莓派,估计是没有人会接着屏幕使用的,但是如果有需求也可以使用。如果我们不用屏幕来使用树莓派,那么就得使用SSH、VNC、还有我们的Windows远程工具了。1.SSH 需要在树莓派中开启SSH支持,开启SSH支持有多种方式,这里我就说说我用的,第一种 就是在我们烧写有系统的时候,在boot的分区里面新建一个不带任何后缀的ssh文件,最简单的方式就是新建txt文件,完了重命名为s..._树莓派 片选接到
文章浏览阅读32次。整个系统以STM32 单片机作为核心控制器,通过DHT11检测温湿度,通过CO传感器检测CO浓度,通过火焰传感器检测火焰,通过红外传感器检测人,通过RFID模块检测刷卡,检测到的数据通过OLED显示并通过无线传输模块上传数据到手机APP,通过继电器控制水阀,通过蜂鸣器报警。
文章浏览阅读1.5k次,点赞2次,收藏7次。vertical-align的可选值为:1. bottom: 图片的底线和文字的底线对齐,2. baseline:默认,图片的底线和文字的基线对齐,3. middle: 图片的中线和文字的中线对齐,4. top:图片的顶线和文字的顶线对齐。不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,所以需要进行CSS初始化。当我们选择input输入框,进行文字输入的时候,边框会改变颜色。textarea默认可以在右下角进行拖拽,改变输入框的大小。CSS初始化参考如下。_html css input::cue
文章浏览阅读84次。一、疑问二、知识点1. 白化 白化操作的输入是特征基准上的数据,然后对每个维度除以其特征值来对数值范围进行归一化。该变换的几何解释是:如果数据服从多变量的高斯分布,那么经过白化后,数据的分布将会是一个均值为零,且协方差相等的矩阵。该操作的代码如下:# 对数据进行白化操作:# 除以特征值 Xwhite = Xrot / np.sqrt(S + 1e-5) 警告:夸大的噪声。注意分母..._人工神经网络系统中的静态数据