Re: Spring injection with java annotation?
On Apr 24, 8:46 am, Alberto Sfolcini <a.sfolc...@gmail.com> wrote:
Hi,
I am wondering if I can use an annotation to inject property and avoid
to write getters and setters for each property.
Let's suppose my spring's bean looks like:
<bean id="test" class="foo.bar.Test">
<property name="debug" value="true"/>
<property name="firstname" value="Bill" />
<property name="lastname" value="Gates" />
</bean>
The Test class should look like:
public class Test{
private boolean debug;
private String firstname;
private String lastname;
// Setters and getters...
public void setFirstname(String furstname) {
this.firstname = firstname;
}
etc etc...
}
What I would like to obtain is to avoid the setters and getters
methods by using an annotation:
public class Test{
@Inject(name="debug", optional="false")
private boolean debug;
@Inject
private String firstname;
@Inject
private String lastname;
}
So, let's see the @Inject interface:
public @interface Inject {
String name() default "";
boolean optional() default false;
}
Now, what I am missing is the injection engine, that should be written
in a class that extends the ApplicationContext I guess.
Can somebody give some help?
thanks
@Autowired.
Spring supports most of the behaviour you want already, at least as of
2.5-series releases (and possibly 2.0-series releases).
Docs link: <http://static.springframework.org/spring/docs/2.5.x/
reference/beans.html#beans-annotation-config>
However, it will still use setFoo injection or constructor arguments -
you can't get away from that without rewriting part of Spring's actual
injection mechanism (which is well-buried). Furthermore, you don't
need to provide set/get pairs for properties you want injected: a set
method is enough. The only reason to add a get method is if you plan
on using the property elsewhere via its get method.
-o