我有一些不错的工作代码,例如:
// SpringConfiguration.class文件
package com.yet.spring.core;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
@Configuration
public class SpringConfiguration {
@Bean
@Scope("prototype")
public Client client(String id, String full_name) {
return new Client(id, full_name);
} //END: Client()
} //END: class SpringConfiguration
现在,我可以通过以下方式请求具有构造函数值的bean“客户端”:
public final static ApplicationContext app_context =
new AnnotationConfigApplicationContext(SpringConfiguration.class);
new_client = (Client) app_context.getBean(Client.class, "1", "John Smith");
如何通过XML配置文件执行此操作?只能将“ constructor-arg”用于静态值或Bean吗?
答案 0 :(得分:0)
如果您确实需要使用XML,那么它还支持构造函数注入,并且适用于基本类型,表达式和bean。
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg index="0" ref="dataSource"/> <!-- bean with id dataSource is defined in the same XML earlier -->
</bean>
如果您需要始终获取具有相同值的Client
bean,则可以执行以下操作
@Bean
@Scope("prototype")
public Client client(@Value("${clientId}") String id, @Value("${clientFullName}") String full_name) {
return new Client(id, full_name);
}
然后定义属性clientId
和clientFullName
是一个属性文件。
如果您每次都需要使用差异参数创建Client
对象,那么您根本不需要Spring。你应该做
new_client = new Client("1", "John Smith");