Book Image

Spring Python 1.1

By : Greg L. Turnquist
Book Image

Spring Python 1.1

By: Greg L. Turnquist

Overview of this book

<p>Spring Python captures the concepts of the Spring Framework and Spring Security and brings them to the world of Python and provides many functional parts to assemble applications. Spring Python is all about using the many useful features of Spring to the fullest and making these features available when working with Python.<br /><br />Get to grips with all of the concepts of Spring and apply these to the language and environment of Python to develop powerful applications for your own personal requirements. The book provides an introduction to Spring Python and steadily takes you towards the advanced features that this integration has to offer.<br /><br />Spring uses the Java programming language. Spring Python, the first Spring extension to go live, allows developers to make maximum use of Spring features in Python. This book starts off by introducing each of the core building blocks of Spring Python using real code examples and high-level diagrams. It explores the various concepts of Spring Python with the help of examples and case studies and focuses on vital Spring Python features to make the lives of Python and Java developers simple. The early chapters cover simple applications with simple operations including data access, and then subsequent chapters scale up to multi-node, secured, transactional applications stopping short of very advanced level complexity.</p>
Table of Contents (16 chapters)
Spring Python 1.1
Credits
About the Author
About the Reviewers
Preface
Index

Applying transactions to non-transactional code


An important aspect of Spring Python is its non-invasive nature. This was demonstrated in great detail in the chapter that introduced aspect oriented programming. Spring Python provides a convenient, non-intrusive method interceptor that allows the demarcation of existing code.

This solves the problem mentioned earlier, where neither editing existing source code nor tangling our business logic with transaction management are acceptable.

  1. Let's start with an alternative version of Bank class that has no transaction demarcation.

    class Bank(object):
        def __init__(self, connectionFactory):
            self.factory = connectionFactory:
            self.dt = DatabaseTemplate(self.factory)
    
        def balance(self, act):
            return self.dt.queryForObject("""
                SELECT BALANCE
                FROM ACCOUNT
                WHERE ACCOUNT_NUM = ?""",
                (act,), types.FloatType)
    
        def withdraw(self, amt, act):
            if (self.balance(act) > amt...