{"id":555,"date":"2013-01-08T19:49:31","date_gmt":"2013-01-08T11:49:31","guid":{"rendered":"http:\/\/blog.amjet.cc\/IT\/?p=555"},"modified":"2014-10-23T10:13:10","modified_gmt":"2014-10-23T02:13:10","slug":"spring-framework-transaction-control-programmatic","status":"publish","type":"post","link":"https:\/\/blog.amjet.biz\/IT\/?p=555","title":{"rendered":"Spring framework transaction control (Programmatic)"},"content":{"rendered":"<p>\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b <a href=\"http:\/\/simplespringtutorial.com\/springProgrammaticTransactions.html\" target=\"_blank\">\u7db2\u5740<\/a><\/p>\n<p>\u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6<\/p>\n<p>&lt;bean id=&#8221;transactionManagerJDBC&#8221;<br \/>\nclass=&#8221;org.springframework.jdbc.datasource.DataSourceTransactionManager&#8221;&gt;<br \/>\n&lt;property name=&#8221;dataSource&#8221; ref=&#8221;dataSource&#8221;&gt;&lt;\/property&gt;<br \/>\n&lt;\/bean&gt;<\/p>\n<p>&lt;bean id=&#8221;transactionTemplate&#8221; class=&#8221;org.springframework.transaction.support.TransactionTemplate&#8221;&gt;<br \/>\n&lt;property name=&#8221;transactionManager&#8221; ref=&#8221;transactionManagerJDBC&#8221;&gt;&lt;\/property&gt;<br \/>\n&lt;\/bean&gt;<\/p>\n<p>&lt;bean id=&#8221;jdbcTemplate&#8221; class=&#8221;org.springframework.jdbc.core.JdbcTemplate&#8221;&gt;<br \/>\n&lt;property name=&#8221;dataSource&#8221; ref=&#8221;dataSource&#8221;&gt;&lt;\/property&gt;<br \/>\n&lt;\/bean&gt;<\/p>\n<p>\u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b<\/p>\n<p>transactionTemplate.execute(new TransactionCallbackWithoutResult() {<br \/>\nprotected void doInTransactionWithoutResult(TransactionStatus status) {<br \/>\ntry {<\/p>\n<p>\/\/ do you works here<br \/>\n} catch (Exception e) {<br \/>\nstatus.setRollbackOnly();<br \/>\n}<br \/>\n}<br \/>\n});<\/p>\n<p>[ratings]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 &lt;bean id=&#8221;transactionManagerJDBC&#8221; class=&#8221;org.springframework.jdbc.datasource.DataSourceTransactionManager&#8221;&gt; &lt;property name=&#8221;dataSource&#8221; ref=&#8221;dataSource&#8221;&gt;&lt;\/property&gt; &lt;\/bean&gt; &lt;bean id=&#8221;transactionTemplate&#8221; class=&#8221;org.springframework.transaction.support.TransactionTemplate&#8221;&gt; &lt;property name=&#8221;transactionManager&#8221; ref=&#8221;transactionManagerJDBC&#8221;&gt;&lt;\/property&gt; &lt;\/bean&gt; &lt;bean id=&#8221;jdbcTemplate&#8221; class=&#8221;org.springframework.jdbc.core.JdbcTemplate&#8221;&gt; &lt;property name=&#8221;dataSource&#8221; ref=&#8221;dataSource&#8221;&gt;&lt;\/property&gt; &lt;\/bean&gt; \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try { [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[30,122],"class_list":["post-555","post","type-post","status-publish","format-standard","hentry","category-java","tag-spring","tag-transaction"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"vincent\"\/>\n\t<meta name=\"keywords\" content=\"spring,transaction,spring,transaction\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/blog.amjet.biz\/IT\/?p=555\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AmJet IT Blog | for IT professionals\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Spring framework transaction control (Programmatic) | AmJet IT Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/blog.amjet.biz\/IT\/?p=555\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2013-01-08T11:49:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2014-10-23T02:13:10+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Spring framework transaction control (Programmatic) | AmJet IT Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#article\",\"name\":\"Spring framework transaction control (Programmatic) | AmJet IT Blog\",\"headline\":\"Spring framework transaction control (Programmatic)\",\"author\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#organization\"},\"datePublished\":\"2013-01-08T19:49:31+08:00\",\"dateModified\":\"2014-10-23T10:13:10+08:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#webpage\"},\"articleSection\":\"Java, Spring, Transaction\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5#listItem\",\"name\":\"Developer\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5#listItem\",\"position\":2,\"name\":\"Developer\",\"item\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8#listItem\",\"name\":\"Java\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8#listItem\",\"position\":3,\"name\":\"Java\",\"item\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#listItem\",\"name\":\"Spring framework transaction control (Programmatic)\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=5#listItem\",\"name\":\"Developer\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#listItem\",\"position\":4,\"name\":\"Spring framework transaction control (Programmatic)\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?cat=8#listItem\",\"name\":\"Java\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#organization\",\"name\":\"AmJet Digital\",\"description\":\"for IT professionals\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2\",\"name\":\"vincent\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c6bcd6e8e7e1c9bce74184354da4a5c294d71657c7abc161841c4799d1b1a46?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"vincent\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#webpage\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555\",\"name\":\"Spring framework transaction control (Programmatic) | AmJet IT Blog\",\"description\":\"\\u5728\\u4e00\\u4e9b\\u6bd4\\u8f03\\u65e9\\u671f\\u7684\\u5c08\\u6848\\u53ef\\u80fd application server\\u3001framework\\u3001java runtime \\u7684\\u7248\\u672c\\u90fd\\u6bd4\\u8f03\\u820a\\u6216\\u4e0d\\u5141\\u8a31\\u505a\\u592a\\u5927\\u5e45\\u5ea6\\u7684\\u8b8a\\u52d5\\uff0c\\u9019\\u6642\\u5019\\u4ee5\\u7a0b\\u5f0f\\u4f86\\u63a7\\u5236 transaction \\u8b8a\\u6210\\u552f\\u4e00\\u7684\\u9078\\u64c7\\uff0c\\u672c\\u6587\\u4e3b\\u8981\\u53c3\\u8003\\u9019\\u500b \\u7db2\\u5740 \\u9996\\u5148\\u5728 applicationContext.xml \\u8a2d\\u5b9a transaction \\u76f8\\u95dc\\u7269\\u4ef6 \\u63a5\\u8457\\u5c07\\u4ee5\\u4e0a\\u7269\\u4ef6 inject \\u5230\\u9700\\u8981 transaction contorl \\u7684 java class\\uff0c\\u9019\\u90e8\\u4efd\\u5c31\\u4e0d\\u518d\\u7d30\\u8ff0\\uff0ctransaction code example \\u5982\\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?p=555#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/?author=2#author\"},\"datePublished\":\"2013-01-08T19:49:31+08:00\",\"dateModified\":\"2014-10-23T10:13:10+08:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#website\",\"url\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/\",\"name\":\"AmJet IT Blog\",\"description\":\"for IT professionals\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.amjet.biz\\\/IT\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Spring framework transaction control (Programmatic) | AmJet IT Blog","description":"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {","canonical_url":"https:\/\/blog.amjet.biz\/IT\/?p=555","robots":"max-image-preview:large","keywords":"spring,transaction,spring,transaction","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#article","name":"Spring framework transaction control (Programmatic) | AmJet IT Blog","headline":"Spring framework transaction control (Programmatic)","author":{"@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author"},"publisher":{"@id":"https:\/\/blog.amjet.biz\/IT\/#organization"},"datePublished":"2013-01-08T19:49:31+08:00","dateModified":"2014-10-23T10:13:10+08:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#webpage"},"isPartOf":{"@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#webpage"},"articleSection":"Java, Spring, Transaction"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT#listItem","position":1,"name":"Home","item":"https:\/\/blog.amjet.biz\/IT","nextItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=5#listItem","name":"Developer"}},{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=5#listItem","position":2,"name":"Developer","item":"https:\/\/blog.amjet.biz\/IT\/?cat=5","nextItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=8#listItem","name":"Java"},"previousItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=8#listItem","position":3,"name":"Java","item":"https:\/\/blog.amjet.biz\/IT\/?cat=8","nextItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#listItem","name":"Spring framework transaction control (Programmatic)"},"previousItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=5#listItem","name":"Developer"}},{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#listItem","position":4,"name":"Spring framework transaction control (Programmatic)","previousItem":{"@type":"ListItem","@id":"https:\/\/blog.amjet.biz\/IT\/?cat=8#listItem","name":"Java"}}]},{"@type":"Organization","@id":"https:\/\/blog.amjet.biz\/IT\/#organization","name":"AmJet Digital","description":"for IT professionals","url":"https:\/\/blog.amjet.biz\/IT\/"},{"@type":"Person","@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author","url":"https:\/\/blog.amjet.biz\/IT\/?author=2","name":"vincent","image":{"@type":"ImageObject","@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/8c6bcd6e8e7e1c9bce74184354da4a5c294d71657c7abc161841c4799d1b1a46?s=96&d=mm&r=g","width":96,"height":96,"caption":"vincent"}},{"@type":"WebPage","@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#webpage","url":"https:\/\/blog.amjet.biz\/IT\/?p=555","name":"Spring framework transaction control (Programmatic) | AmJet IT Blog","description":"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/blog.amjet.biz\/IT\/#website"},"breadcrumb":{"@id":"https:\/\/blog.amjet.biz\/IT\/?p=555#breadcrumblist"},"author":{"@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author"},"creator":{"@id":"https:\/\/blog.amjet.biz\/IT\/?author=2#author"},"datePublished":"2013-01-08T19:49:31+08:00","dateModified":"2014-10-23T10:13:10+08:00"},{"@type":"WebSite","@id":"https:\/\/blog.amjet.biz\/IT\/#website","url":"https:\/\/blog.amjet.biz\/IT\/","name":"AmJet IT Blog","description":"for IT professionals","inLanguage":"en-US","publisher":{"@id":"https:\/\/blog.amjet.biz\/IT\/#organization"}}]},"og:locale":"en_US","og:site_name":"AmJet IT Blog | for IT professionals","og:type":"article","og:title":"Spring framework transaction control (Programmatic) | AmJet IT Blog","og:description":"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {","og:url":"https:\/\/blog.amjet.biz\/IT\/?p=555","article:published_time":"2013-01-08T11:49:31+00:00","article:modified_time":"2014-10-23T02:13:10+00:00","twitter:card":"summary","twitter:title":"Spring framework transaction control (Programmatic) | AmJet IT Blog","twitter:description":"\u5728\u4e00\u4e9b\u6bd4\u8f03\u65e9\u671f\u7684\u5c08\u6848\u53ef\u80fd application server\u3001framework\u3001java runtime \u7684\u7248\u672c\u90fd\u6bd4\u8f03\u820a\u6216\u4e0d\u5141\u8a31\u505a\u592a\u5927\u5e45\u5ea6\u7684\u8b8a\u52d5\uff0c\u9019\u6642\u5019\u4ee5\u7a0b\u5f0f\u4f86\u63a7\u5236 transaction \u8b8a\u6210\u552f\u4e00\u7684\u9078\u64c7\uff0c\u672c\u6587\u4e3b\u8981\u53c3\u8003\u9019\u500b \u7db2\u5740 \u9996\u5148\u5728 applicationContext.xml \u8a2d\u5b9a transaction \u76f8\u95dc\u7269\u4ef6 \u63a5\u8457\u5c07\u4ee5\u4e0a\u7269\u4ef6 inject \u5230\u9700\u8981 transaction contorl \u7684 java class\uff0c\u9019\u90e8\u4efd\u5c31\u4e0d\u518d\u7d30\u8ff0\uff0ctransaction code example \u5982\u4e0b transactionTemplate.execute(new TransactionCallbackWithoutResult() { protected void doInTransactionWithoutResult(TransactionStatus status) { try {"},"aioseo_meta_data":{"post_id":"555","title":null,"description":null,"keywords":[{"label":"Spring,Transaction","value":"Spring,Transaction"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-24 01:26:19","updated":"2025-06-05 09:27:05","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/blog.amjet.biz\/IT\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/blog.amjet.biz\/IT\/?cat=5\" title=\"Developer\">Developer<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/blog.amjet.biz\/IT\/?cat=8\" title=\"Java\">Java<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSpring framework transaction control (Programmatic)\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/blog.amjet.biz\/IT"},{"label":"Developer","link":"https:\/\/blog.amjet.biz\/IT\/?cat=5"},{"label":"Java","link":"https:\/\/blog.amjet.biz\/IT\/?cat=8"},{"label":"Spring framework transaction control (Programmatic)","link":"https:\/\/blog.amjet.biz\/IT\/?p=555"}],"_links":{"self":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=555"}],"version-history":[{"count":6,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/555\/revisions"}],"predecessor-version":[{"id":757,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=\/wp\/v2\/posts\/555\/revisions\/757"}],"wp:attachment":[{"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.amjet.biz\/IT\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}