J2EE之Spring中Bean的配置细节
2016-10-30 20:04
351 查看
J2EE之Spring中Bean的配置细节
代码实现:
Car.java:
package com.mooc.spring.beans; public class Car { private String brand; private String corp; private double price; private int maxSpeed; public Car(String brand, String corp, double price) { super(); this.brand = brand; this.corp = corp; this.price = price; } public Car(String brand, String corp, int maxSpeed) { super(); this.brand = brand; this.corp = corp; this.maxSpeed = maxSpeed; } public Car(String brand, String corp, double price, int maxSpeed) { super(); this.brand = brand; this.corp = corp; this.price = price; this.maxSpeed = maxSpeed; } @Override public String toString() { return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price + ", maxSpeed=" + maxSpeed + "]"; } public void setMaxSpeed(int maxSpeed) { this.maxSpeed = maxSpeed; } public void setPrice(double price) { this.price = price; } }
Person.java:
package com.mooc.spring.beans; public class Person { private String name; private int age; private 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 Car getCar() { return car; } public void setCar(Car car) { this.car = car; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; } public Person() { super(); } public Person(String name, int age, Car car) { super(); this.name = name; this.age = age; this.car = car; } }
main.java:
package com.mooc.spring.beans; import java.io.IOException; import java.lang.annotation.Annotation; import java.util.Locale; import java.util.Map; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationEvent; import org.springframework.context.MessageSourceResolvable; import org.springframework.context.NoSuchMessageException; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.env.Environment; import org.springframework.core.io.Resource; public class main { public static void main(String[] args) { /* //创建HelloWord的一个对象 HelloWord helloWord=new HelloWord(); //为那么赋值 helloWord.setName("atguigu"); helloWord.hello(); */ //1.创建SpringIOC的容器对象 //ApplicationContext 代表IOC容器 //ClassPathXmlApplicationContext:从 类路径下加载配置文件,是ApplicationContext接口的实现类 //FileSystemXmlApplicationContext: 从文件系统中加载配置文件,是ApplicationContext接口的实现类 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); // 2.从IOC容器中获取Bean对象 // HelloWord helloWord=(HelloWord) context.getBean("helloWord"); HelloWord helloWord=context.getBean(HelloWord.class);//适用类型获取,只适用于唯一的一哥bean System.out.println(helloWord); //调用hello方法 helloWord.hello(); Car car=(Car) context.getBean("car"); System.out.println(car); car =(Car) context.getBean("car2"); System.out.println(car); Person person=(Person) context.getBean("person"); System.out.println(person); person=(Person) context.getBean("person2"); System.out.println(person); } }
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: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 class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器 id:标示容器中的bean,id必须唯一 HelloWord helloWord=(HelloWord) context.getBean("helloWord"); --> <bean id="helloWord" class="com.mooc.spring.beans.HelloWord"> <property name="name" value="Spring"></property> </bean> <!-- 通过构造方法来配置Bean的属性 ,用index确定顺序,以type确定类型,以区分重载构造器--> <bean id="car" class="com.mooc.spring.beans.Car"> <constructor-arg value="Audi" index="0"></constructor-arg> <!-- 如果字面值包含特殊字符可以使用<![CDATA[<字面值>]]>包裹起来 --> <!-- 属性值可以使用value子节点直接进行配置 --> <constructor-arg index="1"> <value><![CDATA[<shanghai>]]></value> </constructor-arg> <constructor-arg value="300000" type="double"> </constructor-arg> </bean> <bean id="car2" class="com.mooc.spring.beans.Car"> <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg> <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg> <constructor-arg type="int"> <value>250</value> </constructor-arg> </bean> <bean id="person" class="com.mooc.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!-- 可以使用property的ref属性建立bean之间的引用关系 --> <property name="car" ref="car2"></property> <!-- 也可以写成以下方式 <property name="car> <ref bean="car2 /> </property> --> <!-- 内部bean: 不能被外部引用,只能在内部被引用,不需使用id=“” <property name="car"> <bean class="com.mooc.spring.beans.Car"> <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg> <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg> <constructor-arg type="double" value="200000"></constructor-arg> </bean> </property> <property name="car.maxSpeed" value="8"></property> --> </bean> <bean id="person2" class="com.mooc.spring.beans.Person"> <constructor-arg value="Jerry"></constructor-arg> <constructor-arg value="25"></constructor-arg> <constructor-arg ref="car2"></constructor-arg> <!-- 测试赋值null <constructor-arg><null/></constructor-arg> --> <!-- 级联属性的配置 ,属性先要初始化,后才可以被级联属性赋值,否则会爆出异常,和Struct2不同 <constructor-arg ref="car"></constructor-arg> <property name="car.maxSpeed" value="8"></property> --> </bean> </beans>
代码实现:
Person.java:
package com.mooc.spring.beans.collections; import java.util.List; import com.mooc.spring.beans.Car; public class Person { private String name; private int age; private List<Car> cars; 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<Car> getCars() { return cars; } public void setCars(List<Car> cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", cars=" + cars + "]"; } }
NewPerson.java:
package com.mooc.spring.beans.collections; import java.util.List; import java.util.Map; import com.mooc.spring.beans.Car; public class NewPerson { private String name; private int age; private Map<String, Car> cars; 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, Car> getCars() { return cars; } public void setCars(Map<String, Car> cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", cars=" + cars + "]"; } }
DataSourse.java:
package com.mooc.spring.beans.collections; import java.util.Properties; public class DataSourse { private Properties properties; public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } @Override public String toString() { return "DataSourse [properties=" + properties + "]"; } }
main.java:
package com.mooc.spring.beans.collections; import java.util.Properties; public class DataSourse { private Properties properties; public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } @Override public String toString() { return "DataSourse [properties=" + properties + "]"; } }
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: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 class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求Bean中必须有无参数的构造器 id:标示容器中的bean,id必须唯一 HelloWord helloWord=(HelloWord) context.getBean("helloWord"); --> <bean id="helloWord" class="com.mooc.spring.beans.HelloWord"> <property name="name" value="Spring"></property> </bean> <!-- 通过构造方法来配置Bean的属性 ,用index确定顺序,以type确定类型,以区分重载构造器--> <bean id="car" class="com.mooc.spring.beans.Car"> <constructor-arg value="Audi" index="0"></constructor-arg> <!-- 如果字面值包含特殊字符可以使用<![CDATA[<字面值>]]>包裹起来 --> <!-- 属性值可以使用value子节点直接进行配置 --> <constructor-arg index="1"> <value><![CDATA[<shanghai>]]></value> </constructor-arg> <constructor-arg value="300000" type="double"> </constructor-arg> </bean> <bean id="car2" class="com.mooc.spring.beans.Car"> <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg> <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg> <constructor-arg type="int"> <value>250</value> </constructor-arg> </bean> <bean id="person" class="com.mooc.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!-- 可以使用property的ref属性建立bean之间的引用关系 --> <property name="car" ref="car2"></property> <!-- 也可以写成以下方式 <property name="car> <ref bean="car2 /> </property> --> <!-- 内部bean: 不能被外部引用,只能在内部被引用,不需使用id=“” <property name="car"> <bean class="com.mooc.spring.beans.Car"> <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg> <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg> <constructor-arg type="double" value="200000"></constructor-arg> </bean> </property> <property name="car.maxSpeed" value="8"></property> --> </bean> <bean id="person2" class="com.mooc.spring.beans.Person"> <constructor-arg value="Jerry"></constructor-arg> <constructor-arg value="25"></constructor-arg> <constructor-arg ref="car2"></constructor-arg> <!-- 测试赋值null <constructor-arg><null/></constructor-arg> --> <!-- 级联属性的配置 ,属性先要初始化,后才可以被级联属性赋值,否则会爆出异常,和Struct2不同 <constructor-arg ref="car"></constructor-arg> <property name="car.maxSpeed" value="8"></property> --> </bean> <!-- 测试如何配置集合属性 使用list节点为list属性赋值 --> <bean id="person3" class="com.mooc.spring.beans.collections.Person"> <property name="name" value="fzw"></property> <property name="age" value="27"></property> <property name="cars"> <list> <ref bean="car"/> <ref bean="car2"/> <bean class="com.mooc.spring.beans.Car"> <constructor-arg value="fort" type="java.lang.String"></constructor-arg> <constructor-arg value="shanghai" type="java.lang.String"></constructor-arg> <constructor-arg type="double" value="200000"></constructor-arg> </bean> </list> </property> </bean> <!-- 配置Map属性值 使用map节点及entry子节点配置Map类型的成员变量--> <bean id="newPerson" class="com.mooc.spring.beans.collections.NewPerson"> <property name="name" value="Rose"></property> <property name="age" value="17"></property> <property name="cars"> <map> <entry key="AA" value-ref="car"></entry> <entry key="BB" value-ref="car2"></entry> </map> </property> </bean> <!-- 配置Properties配置属性 ,使用 props和prop为properties属性赋值--> <bean id="dataSourse" class="com.mooc.spring.beans.collections.DataSourse"> <property name="properties"> <props> <prop key="user">root</prop> <prop key="password">123456</prop> <prop key="jdbcUrl">jdbc:mysql:///test</prop> <prop key="driverClass">com.mysql.jdbc.Driver</prop> </props> </property> </bean> <!-- 配置单例的集合bean,以供多个bean进行引用,**需要导入util命名空间** 使用util把bean独立出来 --> <util:list id="cars"> <ref bean="car" /> <ref bean="car2" /> </util:list> <bean id="person4" class="com.mooc.spring.beans.collections.Person"> <property name="name" value="jack"></property> <property name="age" value="29"></property> <property name="cars" ref="cars"></property> </bean> <!-- 通过p命名空间为bean的属性赋值,**需要先导入p命名空间** ,相对于传统的配置方式更加简洁--> <bean id="person5" class="com.mooc.spring.beans.collections.Person" p:age="30" p:name="queen" p:cars-ref="cars"></bean> </beans>
相关文章推荐
- spring 3 bean配置--注入属性配置细节(1)
- spring之bean的配置细节
- spring 4 bean配置--注入属性配置细节(2)
- Spring中使用xml配置bean的细节
- J2EE之Spring中Bean的基础配置
- 详解Spring中使用xml配置bean的细节
- spring学习笔记(3)——bean配置细节注意
- spring学习日志之二Bean的配置的细节和解析
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
- spring_1-4,IOC&DI概述_配置 Bean_属性配置细节
- spring配置bean的细节二
- spring学习总结(四):IOC & DI 配置 Bean 之注入属性细节
- spring之bean的配置细节(二)
- Spring-3:bean的属性配置细节
- 3、Spring4之Bean 配置的细节
- 3、Spring4之Bean 配置的细节
- spring配置bean的细节一
- 快速上手Spring 加载Bean配置文件
- Spring中bean的基本xml配置
- 配置Spring,针对Service层的bean做事务处理