java Spring 4.0基础学习(一)

来源:互联网 发布:织梦cms百科 编辑:程序博客网 时间:2024/06/06 18:52

创建项目:spring-1

导入spring 核心的jar包 beans,context,core,expression 以及打印日志的logging.

创建HelloWorld 类,创建 car 类,person类 

创建测试类Main

代码如下:

HelloWorld

package com.selfStudy;public class HelloWord {private String name;public HelloWord(){System.out.println("build no param constructor HelloWorld ");}public String getName() {return name;}public void setName(String name) {System.out.println("setName被创建了");this.name = name;}public void hello( ){System.out.println("hello "+name);}}

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:cache="http://www.springframework.org/schema/cache"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd"><!-- 配置bean文件 --><!-- id定义对象名 class反射创建对象 --><!--calss: 通过放射的方式在IOC容器中创建bean,所以要求 Bean 中必须有误参数的构造器 id: 标识容器中的bean ID 唯一 该注入方式为setter方法注入即属性注入。 --><bean id="helloworld" class="com.selfStudy.HelloWord"><property name="name" value="Spring"></property></bean></bean>
测试类Main如下:
public class Main {public static void main(String[] args) {//HelloWord helloWorld= new HelloWord();//helloWorld.setName("World");//helloWorld.hello();// 1.创建Spring 的IOC容器对象,同时被setname给对象//ApplicationContext 代表IOC 容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");//2.从Ioc容器中获取bean的实例对象// 利用ID定位容器中的beanHelloWord helloworld = (HelloWord) ctx.getBean("helloworld");// 利用类型返回容器中的bean,但要求IOC容器中必须值有一个该类型的Bean//HelloWord helloworld = ctx.getBean(HelloWord.class);//3.通过bean实例调用对象方法helloworld.hello();}}

car 类:

package com.selfStudy;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.price = price;this.corp = corp;}public void setPrice(double price) {this.price = price;}public void setMaxSpeed(int maxSpeed) {this.maxSpeed = maxSpeed;}public Car(String brand, String corp,  int maxSpeed) {super();this.brand = brand;this.corp = corp;this.maxSpeed = maxSpeed;}@Overridepublic String toString() {return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price+ ", maxSpeed=" + maxSpeed + "]";}}
applicationContext.xml 配置如下:

<!-- 通过构造方法来配置 bean 的属性 --><bean id="car" class="com.selfStudy.Car"><constructor-arg value="Audi" index="0"></constructor-arg><constructor-arg value="shanghai" index="1"></constructor-arg><constructor-arg value="300000" index="2"></constructor-arg></bean><!-- 使用构造器注入属性可以指定参数的位置和参数的类型,以区分重载的构造器 --><bean id="car2" class="com.selfStudy.Car" ><constructor-arg value="BMW" type="java.lang.String"></constructor-arg><!-- 如果字面值中包含特殊字符可以使用<![CDATA[]]>包裹起来 --><!-- 属性值也可以使用value 直接进行配置 --><constructor-arg type="java.lang.String"><value ><![CDATA[<shanghai>]]></value></constructor-arg><constructor-arg type="int"><value>255</value></constructor-arg></bean>

测试类Main如下:

//Car car = (Car) ctx.getBean(Car.class);
Car car = (Car) ctx.getBean("car");
System.out.println(car);

Car car2 = (Car) ctx.getBean("car2");
System.out.println(car2);

Person类创建如下:

package com.selfStudy;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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";}public Person(){}public Person(String name, int age, Car car) {super();this.name = name;this.age = age;this.car = car;}}

applicationContext.xml 文件配置如下:

<bean id="person" class="com.selfStudy.Person"><property name="name" value="Tom"></property><property name="age" value="23"></property><!-- 可以使用property 的 ref 属性建立bean之间的引用关系--><!--  <property name="car" ref="car2"></property> --><!-- <property name="car"><ref bean="car2"/></property> --><!-- 内部bean car3不能被外部引用属性配置--><property name="car"><bean id="car3" class="com.selfStudy.Car"><constructor-arg value="Ford"></constructor-arg><constructor-arg value="Changan"></constructor-arg><constructor-arg value="200000" type="double"></constructor-arg></bean></property><property name="car.maxSpeed" value="333"></property></bean><bean id="person2" class="com.selfStudy.Person"><property name="name" value="Dom"></property><property name="age" value="25"></property><!-- 内部bean car3不能被外部引用构造器配置--><property name="car"><bean id="car4" class="com.selfStudy.Car"><constructor-arg value="ChanganBB"></constructor-arg><constructor-arg value="Changan"></constructor-arg><constructor-arg value="88888" type="double"></constructor-arg></bean></property></bean><bean id="person3" class="com.selfStudy.Person"><constructor-arg value="Jerry"></constructor-arg><constructor-arg value="27"></constructor-arg><!-- 测试赋值null --><!-- <constructor-arg ><null/></constructor-arg> --><!-- 为级联属性赋值 --><constructor-arg ref="car2"></constructor-arg><property name="car.maxSpeed" value="360" ></property></bean>

测试类Main创建:

Person person = (Person)ctx.getBean("person");System.out.println(person);Person person2 = (Person)ctx.getBean("person2");System.out.println(person2);Person person3 = (Person)ctx.getBean("person3");System.out.println(person3);






原创粉丝点击