У меня есть веб-приложение Spring, и все было в порядке, но теперь мне нужен один метод для транзакций,
это мой applicationContext.xml
а это моя база данных.xml
и в одном классе обслуживания у меня есть свойство autowired, и это свойство имеет такой транзакционный метод: я делаю обновление, чтобы изменить одну строку на значение «2», и после того, как я выбрасываю RuntimeException, и если все хорошо, обновление необходимо откатить.
public class SaveSettings {
protected final Logger logger = LoggerFactory.getLogger(getClass());
private SqlSession sqlSession;
public SqlSession getSqlSession() {
return sqlSession;
}
public void setSqlSession(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
@Transactional(readOnly=false,rollbackFor=Exception.class)
public int saveNewSettings(WebServer settings) {
AdminPanelMapper qmap = sqlSession.getMapper(AdminPanelMapper.class);
int inserted = 0;
qmap.updateTo2();
throw new NullPointerException();
}
}
2 дня назад я пробовал столько возможных решений, которые нашел в Google и Stackoverflow, но они никогда не работали хорошо. В data.xml менеджер транзакций является комментарием, потому что я пытался использовать другие примеры, которые нашел.
Если вам нужна дополнительная информация о моей проблеме, я дам вам более подробную информацию, спросите меня. Извините, если я не так объяснил.
Спасибо всем!
РЕДАКТИРОВАТЬ:
И вот ошибка, если я пишу и закрываю комментарии для bean-компонентаtransactionManager.
ERROR: org.springframework.web.context.ContextLoader `- Context initialization failed org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 9 in XML document from ServletContext resource [/WEB-INF/spring/database.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 65; cvc-complex-type.2.4.c: El comodín coincidente es estricto, pero no se ha encontrado ninguna declaración para el elemento 'tx:annotation-driven'.`