Я создал объект базы данных в соответствии с шаблоном singleton. Объект базы данных содержит 2 метода: connect() и update().convert Singelton to Java Spring
Я хочу конвертировать этот singelton в Spring bean.
Таким образом, я создал файл 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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="MySingeltonDB"
class="SingeltonDBVersion2.SingeltonDB" factory-method="getInstance"></bean>
</beans>
ADN класс SingeltonDB:
package SingeltonDBVersion2;
public class SingeltonDB {
private static DBconnImpl db = null;
private static SingeltonDB singalDb = null;
private SingeltonDB(String username, String password) {
db = new DBconnImpl();
}
public static boolean isOpen() {
return (db != null);
}
public synchronized static SingeltonDB getInstance(String username,
String password) throws Exception {
if (db != null) {
return singalDb;
}
System.out.println("The database is now open");
singalDb = new SingeltonDB(username, password);
db.connect(username, password);
System.out.println("The database was connected");
return singalDb;
}
public void create(String tableName) throws Exception {
db.create(tableName);
}
public User query(String tableName, int rowID) throws Exception {
if (db == null) {
System.out.println("Error: the database is not open");
return null;
}
return (db.query(tableName, rowID));
}
public void update(String tableName, User user) throws Exception {
if (db == null) {
System.out.println("Error: the database is not open");
return;
}
db.update(tableName, user);
}
}
и это Основной класс:
package SingeltonDBVersion2;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) throws Exception {
ApplicationContext context =new ClassPathXmlApplicationContext("spring.xml");
}
}
, но я получаю эта ошибка: Ошибка при создании bean-компонента с именем «MySingeltonDB» defi ned in resource path resource [spring.xml]: Недопустимая зависимость, выраженная через аргумент конструктора с индексом 1 типа [java.lang.String]: Неоднозначные типы аргументов фабричного метода. Вы указали правильные ссылки на bean-компоненты в качестве аргументов фабричного метода?
Может кто-нибудь, пожалуйста, помогите мне? Я новичок в весне, поэтому я, возможно, не настроил все протрели ... Спасибо!
Хотя он упоминает конструктор (который сбивает с толку), сообщение указывает на то, что проблема: вы Бесполезный Не указывайте аргументы пользователя/пароля для заводского метода. –
Пример доступен [здесь] (http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-some-examples). –
Спасибо! Другой вопрос. У меня есть эта строка: \t \t ApplicationContext db = new ClassPathXmlApplicationContext ("spring.xml"); , и я хочу, чтобы db действовал как объект SingeltonDB. Смысл я хочу сделать db.updat() .. Я это решаю? – Matoy