Annyce Davis

Davis Technology Consulting

  • Home
  • About Me
  • Blog
  • Courses
  • Newsletter

Configuring Dev and Prod Environments in Spring 3.1

December 24, 2012 by Annyce Davis

Recently I have been exploring the Spring MVC Framework using on Spring 3.1. Based on my Grails experience I was surprised by the amount of manual configuration that is required.  Nevertheless, I thought I would quickly share how to configure development and production environments in your application.  Spring 3.1 introduced what is known as Profiles, which allow the developer to create various bean definitions to be used in different environments.

For instance, in order to use a different database for your dev and prod environments you could configure your sevlet-context.xml file with the following:

Then in your web.xml file you would have the following if you were deploying for the dev environment:

It’s just that simple…

Basic Spring Transactions

May 18, 2009 by Annyce Davis

Spring offers a few options when it comes to transaction management. I used the Programmatic Transaction option this was the easiest to implement in the architecture that I was working with. Here are the steps that I used.

First I modified the jboss-spring.xml file to include a bean reference to the JTA Transaction Manager.

jboss-spring.xml

<bean id=”transactionManager”
class=”org.springframework.transaction.jta.JtaTransactionManager” />

Then in the classes that I wanted to use transactions I added a reference to the bean as a property in the jboss-spring.xml file.

<bean id=”bookMgmtHandler” class=”com.davis.bo.BookMgmtHandler”>
<property name=”bookDAO” ref=”bookDAO” />
<property name=”transactionManager” ref=”transactionManager”/>
</bean>

I then needed to add some imports to the actual Java class that would contain the transactional references. The additional functions that I needed to add related to Spring transactions are highlighted in bold.

BookMgmtHandler.java


import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;

public class BookMgmtHandler {

BookDAO BookDAO = null;
BookDataAggregator BookDataAggregator = null;

private PlatformTransactionManager transactionManager = null;

private TransactionDefinition getDefinition() {
DefaultTransactionDefinition def = new DefaultTransactionDefinition
(TransactionDefinition.PROPAGATION_REQUIRED);

return def;
}

public Book saveBook(Book book) throws BOOKException {

Book retBook = null;
TransactionStatus status = transactionManager.getTransaction(getDefinition());

// put a block for catching exceptions to rollback the transaction
try {
BookDAO.updateBook(book);
retBook = BookDataAggregator.getBook(book.getBookID());
}
catch (BOOKException be){
transactionManager.rollback(status);
throw be;
}

transactionManager.commit(status);
return retBook;
}


public void setTransactionManager(PlatformTransactionManager platformTransactionManager) {
this.transactionManager = platformTransactionManager;
}
}

And that’s it!

Follow Me

  • Bluesky

Categories

  • Android (61)
  • Career (5)
  • Communication (4)
  • Flutter (1)
  • Git (4)
  • Gradle (4)
  • Grails (23)
  • iOS (1)
  • Java (8)
  • JavaScript (6)
  • Kotlin (17)
  • Life (5)
  • Public Speaking (26)
  • Revenue (2)
  • RxJava (1)
  • Software Development (14)
  • Twitter (3)
  • Uncategorized (11)
  • Video Course (5)

Follow Me

  • Bluesky

Copyright © 2025 · All Rights Reserved · Log in