<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://infernus.org"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>infernus</title>
 <link>http://infernus.org</link>
 <description></description>
 <language>en</language>
<item>
 <title>Keyboard Woes</title>
 <link>http://infernus.org/node/278</link>
 <description>&lt;p&gt;Like many programmers, I&#039;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&#039;s a superb piece of kit and I wouldn&#039;t work without it.&lt;/p&gt;
&lt;p&gt;Apple, however, don&#039;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&#039;t help with the NEK4000. Luckily, unlike the rubbish that &lt;a href=&quot;http://www.logitech.com/index.cfm/494/3129&amp;amp;cl=us,en&quot;&gt;Logitech put out&lt;/a&gt;, &lt;a href=&quot;http://www.microsoft.com/hardware/downloads/default.mspx&quot;&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&#039;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=&quot;http://scripts.sil.org/ukelele&quot;&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&#039;ve also dumped LCC and will be trying &lt;a href=&quot;http://www.orderedbytes.com/controllermate/&quot;&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=&quot;quote&quot;&gt;&lt;blockquote class=&quot;quote&quot;&gt;Dude, can you leave a note that infernus that used to be infernus.org, i now &lt;a href=&quot;http://infernus.o0o.nu&quot;&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&#039;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&#039;s nevertheless quite a nice framework to use - once you&#039;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&#039;re trying to keep the UI fluid it&#039;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=&quot;http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html&quot;&gt;Alexander Potochkin&lt;/a&gt; and &lt;a href=&quot;http://thejavacodemonkey.blogspot.com/2007/08/using-aspectj-to-detect-violations-of.html&quot;&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&#039;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(&quot;call (* javax.swing..*+.*(..)) || &quot;
            + &quot;call (javax.swing..*+.new(..))&quot;)
    public void swingMethods() {
    }

    @Pointcut(&quot;call (* javax.swing..*+.add*Listener(..)) || &quot;
            + &quot;call (* javax.swing..*+.remove*Listener(..)) || &quot;
            + &quot;call (* javax.swing..*+.getListeners(..)) || &quot;
            + &quot;call (* javax.swing..*+.revalidate()) || &quot;
            + &quot;call (* javax.swing..*+.invalidate()) || &quot;
            + &quot;call (* javax.swing..*+.repaint()) || &quot;
            + &quot;target (javax.swing.SwingWorker+) || &quot;
            + &quot;call (* javax.swing.SwingUtilities+.invoke*(..)) || &quot;
            + &quot;call (* javax.swing.SwingUtilities+.isEventDispatchThread()) || &quot;
            + &quot;call (void javax.swing.JComponent+.setText(java.lang.String))&quot;)
    public void safeMethods() {
    }

    @Before(&quot;swingMethods() &amp;amp;&amp;amp; !safeMethods() &amp;amp;&amp;amp; !within(EDTCheck)&quot;)
    public void checkCallingThread(final JoinPoint.StaticPart thisJoinPointStatic) {
        if (!EventQueue.isDispatchThread()) {
            System.err.println(&quot;Swing EDT violation: &quot; + thisJoinPointStatic.getSignature()
                    + &quot; (&quot; + thisJoinPointStatic.getSourceLocation() + &quot;)&quot;);
            Thread.dumpStack();
        }
    }
}
&lt;/pre&gt;
&lt;p&gt;Once it&#039;s built, we just need to weave it - I&#039;ve already got compile-time weaving configured for &lt;a href=&quot;http://infernus.org/node/269&quot;&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&#039;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&#039;ve all been distracted by &lt;a href=&quot;http://news.bbc.co.uk/1/hi/world/middle_east/5122404.stm&quot;&gt;current&lt;/a&gt; &lt;a href=&quot;http://www.independent.co.uk/news/uk/politics/new-bailout-is-not-a-blank-cheque-1419507.html&quot;&gt;events&lt;/a&gt;, our Labour government - with the support of the Conservatives - &lt;a href=&quot;http://www.guardian.co.uk/politics/2009/jan/16/mps-expenses-exemption&quot;&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&#039;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&#039;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=&quot;http://joswinson.org.uk/news/000818/expenses_move_risks_further_tarnishing_parliament__swinson.html&quot;&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=&quot;http://www.mysociety.org/2009/01/17/6-days-to-stop-mps-concealing-their-expenses/&quot;&gt;mysociety&lt;/a&gt; have made this easy for you - so please, &lt;a href=&quot;http://foiorder2009.writetothem.com/&quot;&gt;take the time to do it&lt;/a&gt;. And then, on Thursday, &lt;a href=&quot;http://theyworkforyou.com/&quot;&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&#039;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&#039;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&#039;m a little vexed that a LTS release shows such issues - but still, at least it&#039;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&#039;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&#039;m first to admit I&#039;m guilty of all points with regards to &lt;a href=&quot;http://plugins.intellij.net/plugin/?id=1065&quot;&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&#039;s issues with the current feature set!¹
&lt;/p&gt;
&lt;p class=&quot;footnote&quot;&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=&quot;http://gojko.net/&quot;&gt;Gojko Adzic&lt;/a&gt; was kind enough to do a &lt;a href=&quot;http://gojko.net/2008/12/12/building-a-successful-agile-team/&quot;&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=&quot;http://infernus.org/system/files/Building%20an%20Agile%20Team.pdf&quot;&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=&quot;http://www.xpday.org/&quot;&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&#039;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=&quot;http://gojko.net/&quot;&gt;Gojko&lt;/a&gt; has some excellent write-ups (as always), so I won&#039;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=&quot;http://www.techcrunch.com/2008/12/13/joie-de-vivre-the-europeans-are-out-to-lunch/&quot;&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&#039;ll profit from what he&#039;s producing. In the meantime, we&#039;ll have a fair work-life balance and work hard without forgetting the other things in life. Chances are we won&#039;t be outlandishly rich, chances are he&#039;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&#039;s an interesting definition. Even in America, independence is not always a company goal.
&lt;/p&gt;&lt;p&gt;
I fear I won&#039;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&#039;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&#039;re trying to clean up our services at present, and as such are keen on investigating the &lt;a href=&quot;http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-using-aspectj&quot;&gt;@Configurable&lt;/a&gt; annotation for Spring 2.5. For those who aren&#039;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=&quot;http://mojo.codehaus.org/aspectj-maven-plugin/&quot;&gt;a Maven plug-in&lt;/a&gt;. As always, it didn&#039;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&#039;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&#039;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&#039;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>
