GitHub: https://github.com/SylkeWay/synthful
To be designated as a Spring component, a class may be annotated by anyone of the following
| Annotation | Description |
| @Component | Plain old component |
| @Service | There is no difference in behaviour of @Component and @Service annotations, but differences may gradually creep in in the future. @Service is intended for annotating service level components. |
| @Repository | Triggers binding persistence layer exception handling. |
| @Controller | Triggers servlet mapping and handling for the annotated class and its annotated methods. |
Instead of declaring as a bean in the XML context-config file, Class Wally is annotated:
@Component
public class Wally {
final private String name = "Wally";
final private int value = 1000;
public String getName() {
return name;
}
public int getValue() {
return value;
}
}
Regardless which context bootstrap had discovered the annotation of Wally class, the Wally singleton is injectable in AppInfo
@Inject
public void setWally(Wally wally){
this.wName = wally.getName();
this.wValue = wally.getValue();
getLogger().info("wally={}", wally);
}
as well as in DurianMVController
public class DurianMVController
extends AAngsta{
private Wally wally;
@Inject
public void setWally(Wally wally){
this.wally = wally;
getLogger().info("mvc wally={}", wally);
}
The log4j output indicates the success of injection:
INFO AppInfo - message=Open
INFO AppInfo - greeting=#### Hello Bellow ####
INFO AppInfo - aProperties={maxUsers=8}
INFO AppInfo - wally=com.synthful.angst.app.durian.Wally@2b44a3c4
.....
INFO DurianMVController - mvc wally=com.synthful.angst.app.durian.Wally@2b44a3c4
AppInfo and DurianMVController are themselves annotated, in order for Spring to instantiate their singletons.
@Service
public class AppInfo
extends AAngsta{
@Controller
public class DurianMVController
extends AAngsta{
No comments:
Post a Comment