Spring Basics

Spring Basics

Bean lifecycle methods

There are three options for controlling bean lifecycle behavior: custom init() and destroy() methods; the @PostConstruct and @PreDestroy annotations and the

InitializingBean and DisposableBean callback interfaces.

Explain Bean lifecycle in Spring framework

The spring container finds the beans definition from the XML file and instantiates the bean.

Using the dependency injection, spring populates all of the properties as specified in the bean definition.

If the bean implements the BeanNameAware interface, the factory calls setBeanName() passing the bean's ID.

If the bean implements the BeanFactoryAware interface, the factory calls setBeanFactory(), passing an instance of itself.

If there are any BeanPostProcessors associated with the bean, their post- ProcessBeforeInitialization() methods will be called.

If an init-method is specified for the bean, it will be called.

Finally, if there are any BeanPostProcessors associated with the bean, their postProcessAfterInitialization() methods will be called.

What are different types of Autowire types?



What are the different advice types in spring?

Around: Intercepts the calls to the target method

Before: This is called before the target method is invoked

After: This is called after the target method is returned

Throws: This is called when the target method throws and exception


Defined in TransactionDefinition:







Propagation behavior(7 types)




Support a current transaction; throw an exception if no current transaction exists.


Create a new transaction, suspending the current transaction if one exists


Do not support a current transaction; rather always execute non-transactionally.


Do not support a current transaction; throw an exception if a current transaction exists.


Execute within a nested transaction if a current transaction exists, behave like {@link #PROPAGATION_REQUIRED} else.


Declaratively rolling back a transaction

The recommended way to to roll back a transaction is to throw an Exception.

Be default, Any RuntimeException(unchecked exception) triggers rollback, and any checked Exception does not.

You can configure exactly which Exception types mark a transaction for rollback, including checked exceptions.

Programmatically rolling back a transaction


Default settings

• Propagation setting is REQUIRED.

• Isolation level is DEFAULT.

• Transaction is read/write.

• Any RuntimeException triggers rollback, and any checked Exception does not.

Spring Transaction Example

First configure dataSource and transactionManager in Spring configuration file.

Declarative Transaction through XML

This is the most common as it is non-intrusive, and has the least impact on application code.

expression="execution(* com.mydomain.spring.transaction.declarative.xml.XmlTransactionTestService.*(..))" />

The definition ensures that the transactional advice defined by the txAdvice bean executes at the appropriate points in the program.

Declarative via Annotations

Configure the transaction attributes via annotations in the Java source file.

@Transactional(propagation, isolation, timeout, readOnly, rollbackFor, noRollbackFor)

Programmatic - TransactionTemplate

final TransactionTemplate tt = new TransactionTemplate(transactionManager);


tt.execute(new TransactionCallbackWithoutResult() {

public void doInTransactionWithoutResult(TransactionStatus status) {

// do stuff




Spring Event Framework

ApplicationEvent, ApplicationListener, ApplicationEventPublisher.publishEvent(event)

If a Spring bean implements the ApplicationListener, every time an ApplicationEvent gets published to the ApplicationContext, that bean is notified. This is the standard Observer design pattern, we can use it in our Spring-enabled project.

public class EmailService implements ApplicationEventPublisherAware


Hidden features of Spring framework

StringUtilsremoveDuplicateStrings, hasText, capitalize, uncapitalize, getFilenameExtension, stripFilenameExtension



Spring Transactions - Sample Applications


Post a Comment


Java (160) Lucene-Solr (112) Interview (64) All (58) J2SE (53) Algorithm (45) Soft Skills (39) Eclipse (33) Code Example (31) JavaScript (23) Linux (22) Spring (22) Windows (22) Tools (21) Web Development (20) Nutch2 (18) Bugs (17) Debug (16) Defects (14) Text Mining (14) Troubleshooting (14) J2EE (13) Network (13) PowerShell (11) Problem Solving (10) Chrome (9) Design (9) How to (9) Learning code (9) Performance (9) UIMA (9) html (9) Http Client (8) Maven (8) Security (8) Tips (8) bat (8) blogger (8) Big Data (7) Database (7) Google (7) Guava (7) JSON (7) Shell (7) System Design (7) ANT (6) Coding Skills (6) Lesson Learned (6) Programmer Skills (6) Scala (6) css (6) Algorithm Series (5) Cache (5) Continuous Integration (5) IDE (5) adsense (5) xml (5) AIX (4) Become a Better You (4) Code Quality (4) Concurrency (4) Dynamic Languages (4) GAE (4) Git (4) Good Programming Practices (4) Jackson (4) Memory Usage (4) Miscs (4) OpenNLP (4) Project Managment (4) Review (4) Spark (4) Testing (4) ads (4) regular-expression (4) Android (3) Apache Spark (3) Distributed (3) Eclipse RCP (3) English (3) Happy Hacking (3) IBM (3) J2SE Knowledge Series (3) JAX-RS (3) Jetty (3) Life (3) Python (3) Restful Web Service (3) Script (3) regex (3) seo (3) .Net (2) Android Studio (2) Apache (2) Apache Procrun (2) Architecture (2) Batch (2) Bit Operation (2) Build (2) Building Scalable Web Sites (2) C# (2) C/C++ (2) CSV (2) Career (2) Cassandra (2) Fiddler (2) Google Drive (2) Gson (2) How to Interview (2) Html Parser (2) Http (2) Image Tools (2) JQuery (2) Jersey (2) LDAP (2) Logging (2) Mac (2) Software Issues (2) Storage (2) Text Search (2) xml parser (2) AOP (1) Application Design (1) AspectJ (1) Chrome DevTools (1) Cloud (1) Codility (1) Data Mining (1) Data Structure (1) ExceptionUtils (1) Exif (1) Feature Request (1) FindBugs (1) Firefox (1) Greasemonkey (1) HTML5 (1) Httpd (1) I18N (1) IBM Java Thread Dump Analyzer (1) Invest (1) JDK Source Code (1) JDK8 (1) JMX (1) Lazy Developer (1) Machine Learning (1) Mobile (1) My Plan for 2010 (1) Netbeans (1) Notes (1) Operating System (1) Perl (1) Problems (1) Product Architecture (1) Programming Life (1) Quality (1) Redhat (1) Redis (1) RxJava (1) Solutions logs (1) Team Management (1) Thread Dump Analyzer (1) Visualization (1) boilerpipe (1) htm (1) ongoing (1) procrun (1) rss (1)

Popular Posts