我有2个类,其中将自动装配类的getProperty设置为null
我将发布我的课程并在下面解释问题 我已经使用了自动装配,但是我得到的输出为空
Connection.java
@Component
public class Connection {
private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(Connection.class);
Logger basiclogger = Logger.getLogger("Main");
public CloseableHttpClient httpClient;
public static String Server;
public static String service;
public static String User;
public static String Password;
@Autowired
public Connection(@Value("${Server}") String Server, @Value("${service}") String service,
@Value("${User}") String User,@Value("${Password}") String Password)
{
Connection.Server = Server;
Connection.service = service;
Connection.User = User;
Connection.Password = Password;
}
public Connection(){
}
public CloseableHttpClient getHttpClient() {
return httpClient;
}
public void setHttpClient(CloseableHttpClient httpClient) {
this.httpClient = httpClient;
}
public CloseableHttpClient makeConnection() {
AuthenticatedClientBuilder builder = AuthenticatedClientBuilder.create(serviceProvider)
.addServer(Server).setUser(User)
.setPassword(Password);
httpClient = builder.build();
basiclogger.info("Connection is Established SuccessFully");
return httpClient;
}
}
}
在Spring XML中
<bean id="conn" class="com.java.Connection"
scope="prototype"/>
在主要
@Autowired(required = true)
Connection connection;
new ClassPathXmlApplicationContext(new String[] {"Spring-batch-context.xml"});
Connection connection = (Connection)context.getBean("conn");
connection.getHttpClient();
System.out.println("***********"+connection.getHttpClient()+"***********");
但是我将connection.getHttpClient()设置为空
有人可以帮我吗
感谢advnace !!!!!!!!
答案 0 :(得分:0)
发件人:
Connection connection = (Connection)context.getBean("conn");
在主要方法中删除Connection上的@Autowired
并更改为:
@Autowired
BeanFactory beanFactory;
Connection connection = beanFactory.getBean(Connection.class, "args");
@Scope(value = "prototype")
意味着Spring不会在启动时立即实例化bean,而是在以后按需进行实例化。
更新:
这是beanFactory.getBean()
的Javadoc
getBean(java.lang.Class<T> requiredType, java.lang.Object... args)
抛出BeansException 返回一个实例,该实例可以是指定bean的共享或独立的。允许指定显式构造函数参数/工厂方法 参数,覆盖指定的默认参数(如果有) Bean定义。
此方法进入ListableBeanFactory按类型查找范围,但是 也可以根据 给定类型的名称。对于更广泛的检索操作 套豆,请使用ListableBeanFactory和/或BeanFactoryUtils。
参数:
requiredType -豆必须匹配的类型;可以是接口或超类
args -使用显式参数创建bean实例时要使用的参数
返回:bean的一个实例
投掷:
NoSuchBeanDefinitionException -如果没有此类bean定义
BeanDefinitionStoreException -如果已给出参数,但受影响的bean不是原型
BeansException -如果无法创建bean
此外,请在此处阅读:BeanFactory