您现在的位置是:主页 > news > 重庆网站建设023kw/营销推广公司案例

重庆网站建设023kw/营销推广公司案例

admin2025/4/23 9:51:49news

简介重庆网站建设023kw,营销推广公司案例,网站开发 asp.net php,吉林省建设工程监理检测网站目录直通车 1、 本文实验环境 2、 bean与bean之间相互访问 3、配置集合属性 List 4、 配置集合属性Map 5、 获取配置信息 6、 配置单例集合bean以供多个 bean 进行过引用 本文主要从bean的配置由繁到简。学习需要花费时间,这是笔者花费非常多的时间做出来的&am…

重庆网站建设023kw,营销推广公司案例,网站开发 asp.net php,吉林省建设工程监理检测网站目录直通车 1、 本文实验环境 2、 bean与bean之间相互访问 3、配置集合属性 List 4、 配置集合属性Map 5、 获取配置信息 6、 配置单例集合bean以供多个 bean 进行过引用 本文主要从bean的配置由繁到简。学习需要花费时间,这是笔者花费非常多的时间做出来的&am…

目录直通车

1、 本文实验环境

2、 bean与bean之间相互访问

3、配置集合属性 List

 4、 配置集合属性Map

5、 获取配置信息

6、 配置单例集合bean以供多个 bean 进行过引用


本文主要从bean的配置由繁到简。学习需要花费时间,这是笔者花费非常多的时间做出来的,静下心来阅读你会有大收获!有问题欢迎留言!

1、 本文实验环境

文件目录

首先新建一个 TestConstructor 的bean。

public class TestConstructor {/*** 一个汽车的例子*/private String brand;private String province;private double price;private int maxSpeed;public TestConstructor(String brand, String province, double price) {super();this.brand = brand;this.province = province;this.price = price;}public TestConstructor(String brand, double price, int maxSpeed) {super();this.brand = brand;this.price = price;this.maxSpeed = maxSpeed;}@Overridepublic String toString() {return "TestConstructor{" +"brand='" + brand + '\'' +", province='" + province + '\'' +", price=" + price +", maxSpeed=" + maxSpeed +'}';}}

在 constructorContext.xml 中添加以下代码对构造器注入

 <!-- 构造器注入 --><bean id="testConstructor1" class="com.spring.beans.ConstructorInject.TestConstructor"><constructor-arg name="brand" value="Audi"> </constructor-arg><constructor-arg name="province" value="Beijing"> </constructor-arg><constructor-arg name="price" value="300000" type="double"> </constructor-arg></bean><!-- 根据XML的语法,若需要带符号需要加上<![CDATA[]]>,如:<![CDATA[<Shanghai>]]> --><bean id="testConstructor2" class="com.spring.beans.ConstructorInject.TestConstructor"><constructor-arg name="brand" value="BaoMa" type="java.lang.String"> </constructor-arg><constructor-arg name="price" value="300000" type="double"> </constructor-arg><constructor-arg name="maxSpeed" value="200" type="int"> </constructor-arg></bean>

2、 bean与bean之间相互访问

新建一个名为Person的 bean

public class Person {private String name;private int age;private TestConstructor car;public Person() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public TestConstructor getCar() {return car;}public void setCar(TestConstructor car) {this.car = car;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", car=" + car +'}';}
}

组成应用程序的Bean 经常需要相互协作来完成应用程序的功能,所以要使得Bean能够相互访问,就必须在配置文件中指定对Bean的应用。通过ref元素为bean的属性或构造器参数指定对Bean的引用。有以下三种写法:

1)

<property name="car" ref="testConstructor2"> </property>

2)

<property name="car"><ref bean="testConstructor2"/>
</property>


3)内部bean(可给bean赋值),但不能用外部bean使用,只能内部使用。

<property name="car"><bean class="com.spring.beans.ConstructorInject.TestConstructor"><constructor-arg name="brand" value="Ford"> </constructor-arg><constructor-arg name="price" value="200000"> </constructor-arg><constructor-arg name="maxSpeed" value="200"> </constructor-arg></bean><!-- 将car赋值为null,下面是null的转悠标记 --><!--<null/>--></property>

3、配置集合属性 List

新建一个名为PersonList的bean

import java.util.List;public class PersonList {private String name;private int age ;private List<TestConstructor> car;public PersonList() {}@Overridepublic String toString() {return "PersonList{" +"name='" + name + '\'' +", age=" + age +", car=" + car +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public List<TestConstructor> getCar() {return car;}public void setCar(List<TestConstructor> car) {this.car = car;}
}

在xml文件中配置上面刚刚添加的这个bean。

<bean id="personList" class="com.spring.beans.ConstructorInject.PersonList"><property name="name" value="DJun"> </property><property name="age" value="22"> </property><property name="car"><list><ref bean="testConstructor2"/><ref bean="testConstructor1"/></list></property></bean>

在Application执行类中添加代码


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Application {public static void main(String[] args) {ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/spring/beans/ConstructorInject/ConstructorContext.xml");Person person = (Person)applicationContext.getBean("person");System.out.println("----- Person ------\n"+person);PersonList personList = (PersonList) applicationContext.getBean("personList");System.out.println("----- PersonList ------\n"+personList);}
}

得到以下结果

 4、 配置集合属性Map

新建一个PersonMap

import java.util.Map;public class PersonMap {private  String name;private  int age ;private Map<String,TestConstructor> car;public PersonMap() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Map<String, TestConstructor> getCar() {return car;}public void setCar(Map<String, TestConstructor> car) {this.car = car;}@Overridepublic String toString() {return "PersonMap{" +"name='" + name + '\'' +", age=" + age +", car=" + car +'}';}
}

xml 添加如下代码配置bean

<!-- 配置集合属性 Map --><bean id="personMap" class="com.spring.beans.ConstructorInject.PersonMap"><property name="name" value="DJun"> </property><property name="age" value="22"> </property><property name="car"><map><entry key="AA" value-ref="testConstructor1"> </entry><entry key="BB" value-ref="testConstructor2"> </entry></map></property></bean>

在Application中添加

  PersonMap personMap = (PersonMap) applicationContext.getBean("personMap");System.out.println("----- PersonMap ------\n"+personMap);

5、 获取配置信息

新建DataSource的bean


import java.util.Properties;public class DataSource {private Properties properties;public Properties getProperties() {return properties;}public void setProperties(Properties properties) {this.properties = properties;}public DataSource() {}@Overridepublic String toString() {return "DataSource{" +"properties=" + properties +'}';}
}
<!-- 通过props和prop 子节点来对properties来进行赋值 --><bean id="dataSource" class="com.spring.beans.ConstructorInject.DataSource"><property name="properties"><props><prop key="username">root</prop><prop key="password">root</prop><prop key="jdbcUrl"> jdbc:mysql://test</prop><prop key="driverClass">com.mysql.jdbc.Driver</prop></props></property></bean>

6、 配置单例集合bean以供多个 bean 进行过引用

其实运行完了上面的实例之后,发现每次都在使用testConstructor1和testConstructor2,单个bean使用的话,还没有多大的感觉。但是如果像我上面那样去写就非常的臃肿。

请看下面这个解决方案:

在xml中添加以下内容

 <util:list id="cars"><ref bean="testConstructor1"/><ref bean="testConstructor2"/></util:list><bean id="singleList" class="com.spring.beans.ConstructorInject.PersonList"><property name="name" value="DJun"/><property name="age" value="22"/><property name="car" ref="cars"/></bean><!-- 通过 p 为bean 赋值 --><bean id="personP" class="com.spring.beans.ConstructorInject.Person"p:name="DJun"p:age="22"p:car-ref="testConstructor1"/>

完整的Application代码:


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Application {public static void main(String[] args) {ApplicationContext applicationContext =new ClassPathXmlApplicationContext("com/spring/beans/ConstructorInject/ConstructorContext.xml");Person person = (Person)applicationContext.getBean("person");System.out.println("----- Person ------\n"+person);PersonList personList = (PersonList) applicationContext.getBean("personList");System.out.println("----- PersonList ------\n"+personList);PersonMap personMap = (PersonMap) applicationContext.getBean("personMap");System.out.println("----- PersonMap ------\n"+personMap);DataSource dataSource = (DataSource) applicationContext.getBean("dataSource");System.out.println("---------DataSource ----------\n "+dataSource);PersonList personList1 = (PersonList) applicationContext.getBean("singleList");System.out.println("------- PersonList -------\n" + personList1);Person personP = (Person) applicationContext.getBean("personP");System.out.println("------- personP -------\n" + personP);}
}

完整的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: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.xsd"><!-- 构造器注入 --><bean id="testConstructor1" class="com.spring.beans.ConstructorInject.TestConstructor"><constructor-arg name="brand" value="Audi"> </constructor-arg><constructor-arg name="province" value="Beijing"> </constructor-arg><constructor-arg name="price" value="300000" type="double"> </constructor-arg></bean><!-- 根据XML的语法,若需要带符号需要加上<![CDATA[]]>,如:<![CDATA[<Shanghai>]]> --><bean id="testConstructor2" class="com.spring.beans.ConstructorInject.TestConstructor"><constructor-arg name="brand" value="BaoMa" type="java.lang.String"> </constructor-arg><constructor-arg name="price" value="300000" type="double"> </constructor-arg><constructor-arg name="maxSpeed" value="200" type="int"> </constructor-arg></bean><!-- 属性配置细节 --><bean id="person" class="com.spring.beans.ConstructorInject.Person"><property name="name" value="DJun"> </property><property name="age" value="22"> </property><!--组成应用程序的Bean 经常需要相互协作来完成应用程序的功能,所以要使得Bean能够相互访问,就必须在配置文件中指定对Bean的应用。通过ref元素为bean的属性或构造器参数指定对Bean的引用。有以下三种写法:--><!-- 1. --><!--<property name="car" ref="testConstructor2"> </property>--><!-- 2. --><!--<property name="car">--><!--<ref bean="testConstructor2"/>--><!--</property>--><!-- 3.内部bean(可给bean赋值),但不能用外部bean使用,只能内部使用 --><property name="car"><bean class="com.spring.beans.ConstructorInject.TestConstructor"><constructor-arg name="brand" value="Ford"> </constructor-arg><constructor-arg name="price" value="200000"> </constructor-arg><constructor-arg name="maxSpeed" value="200"> </constructor-arg></bean><!-- 将car赋值为null,下面是null的转悠标记 --><!--<null/>--></property><!-- 级联属性 --><!--<property name="car.brand" value="300000"> </property>--></bean><!-- 配置集合属性 List --><bean id="personList" class="com.spring.beans.ConstructorInject.PersonList"><property name="name" value="DJun"> </property><property name="age" value="22"> </property><property name="car"><list><ref bean="testConstructor2"/><ref bean="testConstructor1"/></list></property></bean><!-- 配置集合属性 Map --><bean id="personMap" class="com.spring.beans.ConstructorInject.PersonMap"><property name="name" value="DJun"> </property><property name="age" value="22"> </property><property name="car"><map><entry key="AA" value-ref="testConstructor1"> </entry><entry key="BB" value-ref="testConstructor2"> </entry></map></property></bean><!-- 通过props和prop 子节点来对properties来进行赋值 --><bean id="dataSource" class="com.spring.beans.ConstructorInject.DataSource"><property name="properties"><props><prop key="username">root</prop><prop key="password">root</prop><prop key="jdbcUrl"> jdbc:mysql://test</prop><prop key="driverClass">com.mysql.jdbc.Driver</prop></props></property></bean><!--配置单例集合bean,以供多个 bean 进行过引用--><util:list id="cars"><ref bean="testConstructor1"/><ref bean="testConstructor2"/></util:list><bean id="singleList" class="com.spring.beans.ConstructorInject.PersonList"><property name="name" value="DJun"/><property name="age" value="22"/><property name="car" ref="cars"/></bean><!-- 通过 p 为bean 赋值 --><bean id="personP" class="com.spring.beans.ConstructorInject.Person"p:name="DJun"p:age="22"p:car-ref="testConstructor1"/></beans>