浏览 10764 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-08
Bean定义 @Service public class Service { //默认是按Type装配,可以指定Qualifier使用name装配 @Autowired @Qualifier("path") private String path; @Autowired @Qualifier("pathId") private Integer id; public void go() { } } 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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 属性文件读入 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:config/other.properties</value> </list> </property> </bean> <!-- 修改为对应的packge --> <context:component-scan base-package="com" /> <bean id="path" class="java.lang.String"> <constructor-arg type="java.lang.String" value="${path}" /> </bean> <bean id="pathId" class="java.lang.Integer"> <constructor-arg type="java.lang.String" value="${path.id}" /> </bean> </beans> 这样即使用了基本类型和PropertyPlaceholderConfigurer:) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-08
其实最好的做法是Spring Annotation支持下面这种配置方式
public class Service { @Value("${path}") pirvate String path; } 自动注入取出properties文件中的path值,注入到path field中 |
|
返回顶楼 | |
发表时间:2008-03-07
<bean id="pathId" class="java.lang.Integer"> <constructor-arg type="java.lang.Integer" value="${path.id}" /> </bean> 这个写错了,构造函数的类型是java.lang.String 应该是: <bean id="pathId" class="java.lang.Integer"> <constructor-arg type="java.lang.String" value="${path.id}" /> </bean> 否则会报“构造函数参数类型错误”的错~~ |
|
返回顶楼 | |
发表时间:2008-03-07
还有属性文件的载入,在引入context命名空间后有一种简化的写法:
<context:property-placeholder location="classpath:config/myset.properties" /> |
|
返回顶楼 | |
发表时间:2008-03-07
我不觉得Annotation支持基本类型有什么好处,LZ说的
<bean id="path" class="java.lang.String"> <constructor-arg type="java.lang.String" value="${path}" /> </bean> 这一段,我不觉得这一段比<property name="xxx" value="${pathId}"/>简单多少,甚至还更复杂.我觉得单独为基本类型而再去配置文件中加入一个bean配置是一个太过的作法.什么东西,我觉得只是让程序更简单化,难道为了某种效果去复杂化了,反而不好了. |
|
返回顶楼 | |
发表时间:2008-03-10
Fly_m 写道 我不觉得Annotation支持基本类型有什么好处,LZ说的
<bean id="path" class="java.lang.String"> <constructor-arg type="java.lang.String" value="${path}" /> </bean> 这一段,我不觉得这一段比<property name="xxx" value="${pathId}"/>简单多少,甚至还更复杂.我觉得单独为基本类型而再去配置文件中加入一个bean配置是一个太过的作法.什么东西,我觉得只是让程序更简单化,难道为了某种效果去复杂化了,反而不好了. 只是提一种解决问题的方法,如果不用annotation当然没有这种问题。 问题是,你的项目采用了spring annotation的方式,一个类中有一些属性要注入,这些属性包括一些基本类型。你可以选择:
我会选择和项目更匹配的第二种方式。 选择第一种的话,项目中在类级别就存在annotaion和xml两种方式的IOC配置方式,不一致不说,增加复杂性。 |
|
返回顶楼 | |