我目前有以下代码:
if
我不喜欢这个,并希望用Spring替代它。所以,我认为我应该使用else{
//you already have a pre created View holder. Retrieve it.
viewHOlder=(ViewHolder)convertView.getTag();
//now you can get access to your View elements easily
}
注释。我不想为此拥有属性文件。但是,我希望通过注释获得默认值。
有没有办法在没有属性文件的情况下执行此操作,正确的代码实现是什么?我还需要int port = System.getProperty("port") != null ?
Integer.parseInt(System.getProperty("port")) :
8080;
吗?你能告诉我一个如何做到这一点的工作实例吗?
答案 0 :(得分:4)
假设您使用的是基于java的配置。
@Bean
public static PropertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
然后使用@Value
@Value("${port:8080}")
private int port;
这将检查给定属性port
的系统属性和环境。当启用JNDI时,将检查它并且当具有基于servlet的环境时,您也可以将其作为servlet变量。
使用PropertySourcesPlaceholderConfigurer
并不需要PropertySource
所需的属性文件,这些文件有多种不同的实现方式。
如果您不想注册PropertySourcesPlaceholderConfigurer
,您可以恢复为SpEL,但这会使它更复杂(并且丑陋的imho)。
答案 1 :(得分:1)
我没试过,但你可以使用任何SpEL expression。您的代码可以重写为:
@Value("#{systemProperties['port'] ?: 8080}")
private int port;
请注意,我使用的是safe navigation operator。
关于PropertySourcesPalceholderConfigurer
,我觉得你不需要一个,因为你的类路径中有Spring表达式语言依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
答案 2 :(得分:1)
经过测试和工作。
ptr=(char *)1;
,但它不需要属性文件代码示例:
PropertyPlaceholderConfigurer
配置:
@Value("#{systemEnvironment['YOUR_VARIABLE_NAME'] ?: 'DEFAULT_VALUE'}"
运行所有样本:
package abc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Test {
public final String javaPath;
@Autowired
public Test(@Value("#{systemEnvironment['Path']}") String javaPath) {
this.javaPath = javaPath;
}
}
希望它有所帮助。