问题描述:

一个非常简单的spring项目,用静态工厂方法配置bean实例。项目的目录结构如下:

代码如下:

Car.java

 package com.tt.spring.beans.factory;

 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;
} public Car(){
System.out.println("Car's Constructor...");
} public Car(String brand, double price) {
super();
this.brand = brand;
this.price = price;
} @Override
public String toString() {
return "Car [brand=" + brand + ", price=" + price + "]";
} }

StaticCarFactory.java

 package com.tt.spring.beans.factory;

 import java.util.HashMap;
import java.util.Map; /**
* 静态工厂方法:直接调用某一个类的静态方法就可以返回Bean的实例
*/
public class StaticCarFactory { private static Map<String,Car> cars = new HashMap<String, Car>(); static{
cars.put("Audi",new Car("Audi",300000));
cars.put("Ford", new Car("Ford",40000));
} //静态工厂方法
public static Car getCar(String name){
return cars.get(name); } }

beans-factory.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:context="http://www.springframework.org/schema/context"
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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 通过静态方法来配置bean.注意不是配置静态工厂方法实例,而是配置bean实例 -->
<bean id="car1"
class="com.tt.spring.beans.factory.StaticCarFactory"
factory-method="getCar">
<constructor-arg value="Audi"></constructor-arg>
</bean> </beans>

Main.java:

 package com.tt.spring.beans.factory;

 import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args){ ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-factory.xml"); Car car1 = (Car) ctx.getBean("car1");
System.out.println(car1);
}
}

运行Main.java程序,控制台报错如下:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Object to Car

at com.tt.spring.beans.factory.Main.main(Main.java:12)

原因分析:

第一, 需要装 jre1.5.0及以上的版本

第二, 在eclipse的'Window' 'Preference' 'Java'里,
'Install JREs'里设置你装的jre

第三,在eclipse的'Window' 'Preference' 'Java'里,
'Compiler'里设'Compiler compliance level'为5.0以上
(关键是第三步, 兼容级别)

问题解决:

由于我安装的jdk版本是1.8.0的,所以问题应该出在Compiler compliance level上。

进入Window->Preference->Java->Compiler,发现Compiler compliance level=1.5

将Compiler compliance level改成1.8:

再运行Main.java代码,运行正常,控制台显示如下信息:

最新文章

  1. snmp学习笔记
  2. div+css页面右侧底部悬浮层
  3. NoSQl简介(转)
  4. bug_ _
  5. 4、IMS
  6. 没有好看的 Terminal 怎么能够快乐地写代码
  7. OpenNebula Restfull 接口请求示例
  8. 【转】android的startActivityForResult学习心得
  9. springMVC工作原理图
  10. Hyper-V下的Linux虚拟机网卡丢失问题原因及解决办法
  11. C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码
  12. ●BZOJ 2500 幸福的道路
  13. 每日分享!~ JavaScript(js数组如何在指定的位置插入一个元素)
  14. su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别
  15. Python3调用Hadoop的API
  16. RDLC报表系列--------报表分页显示标题
  17. python获取当前文件路径以及父文件路径
  18. Visualforce控制器
  19. Power consumption comparison
  20. 转)服务器安装部署ESXI6.0

热门文章

  1. 利用Masscan批量生成随机ip地址表
  2. 从toString()方法到Object.prototype.toString.call()方法
  3. 20145302张薇《Java程序设计》第五周学习总结
  4. 20145327 《Java程序设计》第九周学习总结
  5. nmap与Nessus扫描特定靶机分析
  6. 再也不学AJAX了!(三)跨域获取资源 ② - JSONP &amp; CORS
  7. linux下安装mysql详细步骤
  8. zookeeper项目使用几点小结
  9. java基础笔试题二(集合关系)
  10. 爬虫框架Scrapy之详解