Interface:
public interface FooService {
public int doSomething();
}
Class:
@Service
public class FooServiceImpl implements FooService {
@Override
public int doSomething() {
//Do some stuff here
return 0;
}
}
It should be noted that a class must implement an interface for Spring to be able to autowire this class. There is a method to allow Spring to autowire stand-alone classes using load time weaving, but that is out of scope for this example.
You can gain access to this bean in any class that instantiated by the Spring IoC container using the @Autowired
annotation.
Usage:
@Autowired([required=true])
The @Autowired
annotation will first attempt to autowire by type, and then fall back on bean name in the event of ambiguity.
This annotation can be applied in several different ways.
Constructor injection:
public class BarClass() {
private FooService fooService
@Autowired
public BarClass(FooService fooService) {
this.fooService = fooService;
}
}
Field injection:
public class BarClass() {
@Autowired
private FooService fooService;
}
Setter injection:
public class BarClass() {
private FooService fooService;
@Autowired
public void setFooService(FooService fooService) {
this.fooService = fooService;
}
}