<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xml:base="http://infernus.org">
<channel>
 <title>infernus</title>
 <link>http://infernus.org</link>
 <description />
 <language>en</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Infernus" type="application/rss+xml" /><item>
 <title>Keyboard Woes</title>
 <link>http://infernus.org/node/278</link>
 <description>&lt;p&gt;Like many programmers, I'm very picky about my input devices. Particularly about keyboards - both at home and work I use a Microsoft Natural Ergonomic Keyboard 4000. Despite the overly lengthy name, it's a superb piece of kit and I wouldn't work without it.&lt;/p&gt;
&lt;p&gt;Apple, however, don't believe in locales outside the US. And so the UK keyboard layout on my MBP is designed around the hacked-together monstrosity Apple consider a UK keyboard layout. Those who have used MacBooks will know this is essentially a slightly hacked US layout, and so it doesn't help with the NEK4000. Luckily, unlike the rubbish that &lt;a href="http://www.logitech.com/index.cfm/494/3129&amp;amp;cl=us,en"&gt;Logitech put out&lt;/a&gt;, &lt;a href="http://www.microsoft.com/hardware/downloads/default.mspx"&gt;Intellitype&lt;/a&gt; has been stable and useful for me, and sorted the problem.&lt;/p&gt;
&lt;p&gt;Until recently...&lt;/p&gt;
&lt;p&gt;At work we're currently doing Swing development on Java 6. Java 6 for the Mac is 64bit only. And, unlike the 32bit Java 5, the Microsoft Keyboard driver refuses to offer keystrokes to the 64bit JVM. Hence i had to swap keyboard layouts if I wanted to do crazy things such as entering text into our application.&lt;/p&gt;
&lt;p&gt;Luckily, &lt;a href="http://scripts.sil.org/ukelele"&gt;Ukulele&lt;/a&gt; has saved me. It is a keyboard layout editor for the Mac, and I was quickly able to knock up an appropriate layout. And so I can now happily type sans-Intellitype.&lt;/p&gt;
&lt;p&gt;I've also dumped LCC and will be trying &lt;a href="http://www.orderedbytes.com/controllermate/"&gt;ControllerMate&lt;/a&gt; for my mapping needs. Stay tuned!&lt;/p&gt;</description>
 <comments>http://infernus.org/node/278#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/4">Development</category>
 <category domain="http://infernus.org/taxonomy/term/3">Mac</category>
 <category domain="http://infernus.org/taxonomy/term/24">PC</category>
 <enclosure url="http://infernus.org/system/files/MSNK4000UK.zip" length="4730" type="application/zip" />
 <pubDate>Sat, 14 Feb 2009 01:11:08 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">278 at http://infernus.org</guid>
</item>
<item>
 <title>Ghosts of the Past</title>
 <link>http://infernus.org/node/277</link>
 <description>&lt;p&gt;I just stumbled across a misplaced comment:&lt;/p&gt;
&lt;div class="quote"&gt;&lt;blockquote class="quote"&gt;Dude, can you leave a note that infernus that used to be infernus.org, i now &lt;a href="http://infernus.o0o.nu"&gt;http://infernus.o0o.nu&lt;/a&gt; - we lost the domain at some point and I guess it is useless to try to recover it back cheers&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;So, if you've been missing the website in question for the last 20 months, you now know where to go!&lt;br /&gt;&lt;/p&gt;</description>
 <comments>http://infernus.org/node/277#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/6">News</category>
 <pubDate>Tue, 03 Feb 2009 17:34:07 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">277 at http://infernus.org</guid>
</item>
<item>
 <title>Checking the EDT with aspects</title>
 <link>http://infernus.org/node/276</link>
 <description>&lt;p&gt;I am unreasonably fond of Swing. While it has plenty of foibles, and brings a new horror to UIs with Metal, it's nevertheless quite a nice framework to use - once you're familiar with it.&lt;/p&gt;
&lt;p&gt;The problem is that getting familiar is a path strewn with brambles and holes full on punji sticks. One of the bigger holes is the event dispatch thread (EDT) - everything Swing related should take place on the EDT (even initialisation, under the latest Sun guidelines). When you're trying to keep the UI fluid it's all too easy to break the rule - hence, aspects to the rescue!&lt;/p&gt;
&lt;p&gt;This topic has been covered by many before, including &lt;a href="http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html"&gt;Alexander Potochkin&lt;/a&gt; and &lt;a href="http://thejavacodemonkey.blogspot.com/2007/08/using-aspectj-to-detect-violations-of.html"&gt;Anders Prisak&lt;/a&gt; - however, I found their solution needed a little tweaking to be used in our environment. In particular, they had missed two cases we cover - SwingUtilities and SwingWorker.&lt;/p&gt;
&lt;p&gt;So, here's the tweaked aspect. safeMethods now includes a few extras.&lt;/p&gt;
&lt;pre&gt;
package org.infernus.swing.aspects;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

import java.awt.*;

@Aspect
public class EDTCheck {

    @Pointcut("call (* javax.swing..*+.*(..)) || "
            + "call (javax.swing..*+.new(..))")
    public void swingMethods() {
    }

    @Pointcut("call (* javax.swing..*+.add*Listener(..)) || "
            + "call (* javax.swing..*+.remove*Listener(..)) || "
            + "call (* javax.swing..*+.getListeners(..)) || "
            + "call (* javax.swing..*+.revalidate()) || "
            + "call (* javax.swing..*+.invalidate()) || "
            + "call (* javax.swing..*+.repaint()) || "
            + "target (javax.swing.SwingWorker+) || "
            + "call (* javax.swing.SwingUtilities+.invoke*(..)) || "
            + "call (* javax.swing.SwingUtilities+.isEventDispatchThread()) || "
            + "call (void javax.swing.JComponent+.setText(java.lang.String))")
    public void safeMethods() {
    }

    @Before("swingMethods() &amp;amp;&amp;amp; !safeMethods() &amp;amp;&amp;amp; !within(EDTCheck)")
    public void checkCallingThread(final JoinPoint.StaticPart thisJoinPointStatic) {
        if (!EventQueue.isDispatchThread()) {
            System.err.println("Swing EDT violation: " + thisJoinPointStatic.getSignature()
                    + " (" + thisJoinPointStatic.getSourceLocation() + ")");
            Thread.dumpStack();
        }
    }
}
&lt;/pre&gt;
&lt;p&gt;Once it's built, we just need to weave it - I've already got compile-time weaving configured for &lt;a href="http://infernus.org/node/269"&gt;Spring @Configurable support&lt;/a&gt;, so just add the JAR containing the aspect as a weaveDependency and then the magic happens.&lt;/p&gt;
&lt;p&gt;Now, if a Swing call is made off of the EDT, you'll get complaints:&lt;/p&gt;
&lt;pre&gt;
Swing EDT violation: String javax.swing.JTextArea.getText() (YourSwingClass.java:98)
java.lang.Exception: Stack trace
        at java.lang.Thread.dumpStack(Thread.java:1224)
        at org.infernus.swing.aspects.EDTCheck.checkCallingThread(EDTCheck.java:55)
     ... and so on
&lt;/pre&gt;</description>
 <comments>http://infernus.org/node/276#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/4">Development</category>
 <category domain="http://infernus.org/taxonomy/term/26">Java</category>
 <pubDate>Tue, 03 Feb 2009 17:27:14 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">276 at http://infernus.org</guid>
</item>
<item>
 <title>MPs ensure themselves a friendly recession</title>
 <link>http://infernus.org/node/275</link>
 <description>&lt;p&gt;
While we've all been distracted by &lt;a href="http://news.bbc.co.uk/1/hi/world/middle_east/5122404.stm"&gt;current&lt;/a&gt; &lt;a href="http://www.independent.co.uk/news/uk/politics/new-bailout-is-not-a-blank-cheque-1419507.html"&gt;events&lt;/a&gt;, our Labour government - with the support of the Conservatives - &lt;a href="http://www.guardian.co.uk/politics/2009/jan/16/mps-expenses-exemption"&gt;have slipped in an Order to reverse&lt;/a&gt; the High Court judgement requiring them to release details of their expenses.
&lt;/p&gt;&lt;p&gt;
And why wouldn't they, when previous requests have revealed such delights as £1600 on window cleaning (Barbara Follett, Labour) and the famous £40000 paid to an MP's son for research (Derek Conway, Conservative).
&lt;/p&gt;&lt;p&gt;
Luckily, not all our MPs are quite so blind with power to endorse this. In particular, Jo Swinson (Liberal Democrats) today &lt;a href="http://joswinson.org.uk/news/000818/expenses_move_risks_further_tarnishing_parliament__swinson.html"&gt;tabled a motion against it&lt;/a&gt;, backed by Richard Shepard (Conservatives) and David Winnick (Labour).
&lt;/p&gt;&lt;p&gt;
So, what can you do? Write to your MP. Luckily, the good people at &lt;a href="http://www.mysociety.org/2009/01/17/6-days-to-stop-mps-concealing-their-expenses/"&gt;mysociety&lt;/a&gt; have made this easy for you - so please, &lt;a href="http://foiorder2009.writetothem.com/"&gt;take the time to do it&lt;/a&gt;. And then, on Thursday, &lt;a href="http://theyworkforyou.com/"&gt;check how your MP voted&lt;/a&gt;.
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/275#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/8">Politics</category>
 <pubDate>Tue, 20 Jan 2009 02:12:21 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">275 at http://infernus.org</guid>
</item>
<item>
 <title>Ubuntu LTS scorns your initrds!</title>
 <link>http://infernus.org/node/274</link>
 <description>&lt;p&gt;
We have a number of developer boxes running Ubuntu 8.04LTS at work. For various reasons, we still have a few of the older boxes running Fedora 8, and we're gradually moving them into the Ubuntu world.
&lt;/p&gt;&lt;p&gt;
Today we moved two more developers across. One was fine - everything worked, all was good, little elves danced their happy dances and so on. Unfortunately, the other one rebooted and kernel panicked.
&lt;/p&gt;&lt;p&gt;
Bugger.
&lt;/p&gt;&lt;p&gt;
The problem - one of the Ubuntu kernel updates didn't bother to add an initrd line to /boot/grub/menu.lst.
&lt;/p&gt;&lt;pre&gt;
title           Ubuntu 8.04, kernel 2.6.24-23-generic  
root            (hd0,0)  
kernel          /vmlinuz-2.6.24-23-generic root=UUID=....
&lt;/pre&gt;&lt;p&gt;
The solution: bring it back!
&lt;/p&gt;&lt;pre&gt;
title           Ubuntu 8.04, kernel 2.6.24-23-generic  
root            (hd0,0)  
kernel          /vmlinuz-2.6.24-23-generic root=UUID=....
initrd          /initrd.img-2.6.24-23-generic
&lt;/pre&gt;&lt;p&gt;
Google provided the answer fairly quickly here, so it seems a reasonably common problem. I must concede I'm a little vexed that a LTS release shows such issues - but still, at least it's not Vista.
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/274#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/4">Development</category>
 <category domain="http://infernus.org/taxonomy/term/36">Linux</category>
 <pubDate>Mon, 19 Jan 2009 20:10:00 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">274 at http://infernus.org</guid>
</item>
<item>
 <title>The Curse of Open Source</title>
 <link>http://infernus.org/node/273</link>
 <description>&lt;p&gt;
One must only browse the vast repositories of half-finished software at SourceForge to see that many promising (or just plain useful) projects seem to just vanish, left incomplete and at the mercy of bit-rot.
&lt;/p&gt;&lt;p&gt;
The main reasons for this are threefold:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;A lot of open-source software is written to scratch an itch. That itch may not be quite the same as yours, and so it may be regarded as finished by the author.&lt;/li&gt;
&lt;li&gt;Support and bug-fixes are generally dull; certainly a lot less interested that writing something new.&lt;/li&gt;
&lt;li&gt;Polish is hard - it's easy to build something rough and ready, and significantly harder to add the sparkle.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
I'm first to admit I'm guilty of all points with regards to &lt;a href="http://plugins.intellij.net/plugin/?id=1065"&gt;CheckStyle-IDEA&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
This was written to scratch an itch - real-time scanning in IDEA. I have a CI server to do static scans, and my needs are simple with regards to plug-ins and the like. So I was happy with a fairly minimal feature set. Nevertheless, I did try to add more features to help others, and these are mostly where the bugs have crept in.
&lt;/p&gt;&lt;p&gt;
Unfortunately I gave into temptation and played with other things rather than fixing said bugs. And so, with the holiday upon us, I have done a little to whittle away at my laziness and released a bug-fix version: 2.3, with all reported issues fixed.
&lt;/p&gt;&lt;p&gt;
So, apologies for the tardiness, and I hope this solves most people's issues with the current feature set!¹
&lt;/p&gt;
&lt;p class="footnote"&gt;
¹ Of course, if not, please feel free to submit a patch!
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/273#comments</comments>
 <pubDate>Mon, 29 Dec 2008 20:57:30 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">273 at http://infernus.org</guid>
</item>
<item>
 <title>Building a Successful Agile Team - Slides</title>
 <link>http://infernus.org/node/272</link>
 <description>&lt;p&gt;
John and I received a most encouraging reception to our presentation at XPDay on Thursday, &lt;b&gt;Building a Successful Agile Team.&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://gojko.net/"&gt;Gojko Adzic&lt;/a&gt; was kind enough to do a &lt;a href="http://gojko.net/2008/12/12/building-a-successful-agile-team/"&gt;write-up for those who missed it.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
For those interested, you can find the slides here:
&lt;a href="http://infernus.org/system/files/Building%20an%20Agile%20Team.pdf"&gt;Building a Successful Agile Team&lt;/a&gt;
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/272#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/4">Development</category>
 <enclosure url="http://infernus.org/system/files/Building%20an%20Agile%20Team.pdf" length="4258856" type="application/pdf" />
 <pubDate>Mon, 15 Dec 2008 11:16:47 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">272 at http://infernus.org</guid>
</item>
<item>
 <title>XPDay 2008</title>
 <link>http://infernus.org/node/271</link>
 <description>&lt;p&gt;
I was lucky enough last week to skip our release days and instead spend the time listening and learning at &lt;a href="http://www.xpday.org/"&gt;XPDay&lt;/a&gt; in London (and, on Thursday evening, drinking myself somewhat silly).
&lt;/p&gt;&lt;p&gt;
They chose an interesting format this year - only a few presentations were pre-approved, and most of the presentation space was opened to proposals during the conference. An interesting idea, but my feeling is it went a little awry. Many sessions ended up being a discussion around a problem someone was having - these are all very interesting and often important, but there failed to be the balance between such impromptu debate and the more formal presentations.
&lt;/p&gt;&lt;p&gt;
Some highlights - 
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;The spirited lightning talk on �??The sword of integration�??.&lt;/li&gt;
&lt;li&gt;The [ex-]EA test manager who said �??Some people were complaining about being able to shoot through walls. Who gives a cock?�??. And we wonder why EA games are known for their quality.&lt;/li&gt;
&lt;li&gt;People turning up en-masse to my &amp;#38; John's talk, and not throwing rotten fruit! Much appreciated.&lt;/li&gt;
&lt;li&gt;The people - I met some very interesting souls and that alone made the trip worthwhile.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
As for the content, &lt;a href="http://gojko.net/"&gt;Gojko&lt;/a&gt; has some excellent write-ups (as always), so I won't reinvent the wheel.
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/271#comments</comments>
 <pubDate>Mon, 15 Dec 2008 02:03:19 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">271 at http://infernus.org</guid>
</item>
<item>
 <title>Vive la différence!</title>
 <link>http://infernus.org/node/270</link>
 <description>&lt;p&gt;
Michael Arrington has written a somewhat strong piece on his views on &lt;a href="http://www.techcrunch.com/2008/12/13/joie-de-vivre-the-europeans-are-out-to-lunch/"&gt;European startups&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
As always, a browse of the comments leads you to the conclusion that arrogance and defensiveness are common traits shared across the Atlantic. However, I think Michael has missed a rather important point - while correctly attacking the climate (in particular bureaucracy) arrayed against start-ups he misses that his definition of success is an American one.
&lt;/p&gt;&lt;p&gt;
Maybe working 70 hours a week for years turns him on. Good for him. He can profit from our varying attitude and hopefully we'll profit from what he's producing. In the meantime, we'll have a fair work-life balance and work hard without forgetting the other things in life. Chances are we won't be outlandishly rich, chances are he'll spend less time with friends and family. Neither approach is wrong, merely different.
&lt;/p&gt;&lt;p&gt;
He also appears to believe that being bought out by an American company is failure. Given the amount of money changing hands it's an interesting definition. Even in America, independence is not always a company goal.
&lt;/p&gt;&lt;p&gt;
I fear I won't be moving to America any time soon to join in the Silicon Valley 24-hour workday. In any case, even if I wanted that lifestyle the pound won't buy very much elsewhere ;-)
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/270#comments</comments>
 <pubDate>Sun, 14 Dec 2008 19:59:55 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">270 at http://infernus.org</guid>
</item>
<item>
 <title>Weaving Maven</title>
 <link>http://infernus.org/node/269</link>
 <description>&lt;p&gt;
We're trying to clean up our services at present, and as such are keen on investigating the &lt;a href="http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-using-aspectj"&gt;@Configurable&lt;/a&gt; annotation for Spring 2.5. For those who aren't in the know, this uses aspects to allow Spring to configure new instances of an annotated class, allowing dependencies to magically appear in your new object, no factories required.
&lt;/p&gt;&lt;p&gt;
Black magic? Perhaps. Time will tell. But first we had to get it set up anyway.
&lt;/p&gt;&lt;p&gt;
In theory, this is simple. You have two choices: runtime or compile-time weaving. Compile-time means changing your build scripts. Runtime means either using a compliant classloader (WLS, for instance) or changing your JVM parameters (nasty for deployment). Given our lack of desire for deployment pain compile-time seemed the obvious choice.
&lt;/p&gt;&lt;p&gt;
As always, there was &lt;a href="http://mojo.codehaus.org/aspectj-maven-plugin/"&gt;a Maven plug-in&lt;/a&gt;. As always, it didn't work. At least not with Spring 2.5.4. It turns out that Spring 2.5.4 broke compatibility with AspectJ 1.5.4. Worse, Spring's POMs were broken and it still depended on this incompatible version. So, task one: &lt;strong&gt;upgrade to Spring 2.5.5&lt;/strong&gt;.
&lt;/p&gt;&lt;p&gt;
Secondly, the Maven plug-in still broke. So, check it out, change the version number and the AspectJ version, compile &amp;#38; upload to our internal repository. &lt;strong&gt;Task two: hack the Maven plug-in. &lt;/strong&gt;I have a growing suspicion that this is a standard part of the Maven workflow.
&lt;/p&gt;&lt;p&gt;
Now, the easy bit - &lt;strong&gt;configure your POM&lt;/strong&gt;. Except the examples need a bit of tweaking, not least because Java 5 is now old hat. Try the following:
&lt;/p&gt;&lt;pre&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.aspectj&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;aspectjrt&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.6.0&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-aspects&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;2.5.5&amp;lt;/version&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;&lt;p&gt;
And:
&lt;/p&gt;&lt;pre&gt;
&amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;aspectj-maven-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.0-st&amp;lt;/version&amp;gt;
    &amp;lt;executions&amp;gt;
        &amp;lt;execution&amp;gt;
            &amp;lt;goals&amp;gt;
                &amp;lt;goal&amp;gt;compile&amp;lt;/goal&amp;gt;
                &amp;lt;goal&amp;gt;test-compile&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
        &amp;lt;/execution&amp;gt;
    &amp;lt;/executions&amp;gt;
    &amp;lt;configuration&amp;gt;
        &amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;
        &amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;

        &amp;lt;showWeaveInfo&amp;gt;true&amp;lt;/showWeaveInfo&amp;gt;
        &amp;lt;verbose&amp;gt;true&amp;lt;/verbose&amp;gt;
        &amp;lt;proceedOnError&amp;gt;false&amp;lt;/proceedOnError&amp;gt;

        &amp;lt;weaveDependencies&amp;gt;
            &amp;lt;weaveDependency&amp;gt;
                &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;spring-aspects&amp;lt;/artifactId&amp;gt;
            &amp;lt;/weaveDependency&amp;gt;
        &amp;lt;/weaveDependencies&amp;gt;

        &amp;lt;aspectLibrarys&amp;gt;
            &amp;lt;aspectLibrary&amp;gt;
                &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;spring-aspects&amp;lt;/artifactId&amp;gt;
            &amp;lt;/aspectLibrary&amp;gt;
        &amp;lt;/aspectLibrarys&amp;gt;
    &amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;&lt;p&gt;
Change the plug-in version number as required, of course.
&lt;/p&gt;&lt;p&gt;
Finally, step four: &lt;strong&gt;pimp your application&lt;/strong&gt;. You'll need the following in your Spring configuration:
&lt;/p&gt;&lt;pre&gt;
&amp;lt;context:spring-configured/&amp;gt;
&lt;/pre&gt;&lt;p&gt;
Right, after all that you can start the @Configurable love. Create your bean:
&lt;/p&gt;&lt;pre&gt;
package com.signtechno.example;

@Configurable
public class DummyBean {
    private int value;

    public void setValue(final int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}
&lt;/pre&gt;&lt;p&gt;
Create a Spring prototype:
&lt;/p&gt;&lt;pre&gt;
&amp;lt;bean class=�??com.signtechno.example.Dummy�?? scope=�??prototype�??&amp;gt;
    &amp;lt;property name=�??value�?? value=�??17�??/&amp;gt;
&amp;lt;/bean&amp;gt;
&lt;/pre&gt;&lt;p&gt;
Create your logic:
&lt;/p&gt;&lt;pre&gt;
final DummyBean dummyBean = new DummyBean();
&lt;/pre&gt;&lt;p&gt;
And voila, dummyBean.getValue() == 17. Wasn't that easy?
&lt;/p&gt;</description>
 <comments>http://infernus.org/node/269#comments</comments>
 <category domain="http://infernus.org/taxonomy/term/4">Development</category>
 <category domain="http://infernus.org/taxonomy/term/26">Java</category>
 <category domain="http://infernus.org/taxonomy/term/46">Signature</category>
 <pubDate>Fri, 26 Sep 2008 17:23:01 +0000</pubDate>
 <dc:creator>James</dc:creator>
 <guid isPermaLink="false">269 at http://infernus.org</guid>
</item>
</channel>
</rss>
