0% found this document useful (0 votes)
32 views

Spring 5 Defining Injection Point

The document discusses different ways to define injection points in Spring, including using the @Autowired and @Inject annotations to inject dependencies into fields, constructors, setters, and arbitrary methods. It provides examples of defining beans and running simple greeting applications to demonstrate dependency injection.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views

Spring 5 Defining Injection Point

The document discusses different ways to define injection points in Spring, including using the @Autowired and @Inject annotations to inject dependencies into fields, constructors, setters, and arbitrary methods. It provides examples of defining beans and running simple greeting applications to demonstrate dependency injection.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Piseth Java School

1- Defining injection point by using @Autowire annotation


The annotation @Autowired can be used to declare an injection point.

In other words, this annotation instructs the Spring container to find a registered bean of
the same type as of the annotated type and perform dependency injection.

Example

@Autowired can be used at various places. Following example shows how to use it on a
field.

public class GreetingService {

public String getGreeting(String name) {

return "Hi there, " + name;

Using @Autowired

public class Greeter {

@Autowired

private GreetingService greetingService;

public void showGreeting(String name) {

System.out.println(greetingService.getGreeting(name));

1
Piseth Java School

Defining beans and running the example application

@Configuration

public class AppRunner {

@Bean

public GreetingService greetingService() {

return new GreetingService();

@Bean

public Greeter greeter() {

return new Greeter();

public static void main(String... strings) {

AnnotationConfigApplicationContext context = new


AnnotationConfigApplicationContext(AppRunner.class);

Greeter greeter = context.getBean(Greeter.class);

greeter.showGreeting("Piseth");

Output: Hi there, Piseth

@Autowire can also be used on setters , constructors and to any methods having
multiple arguments.

2
Piseth Java School

2 - Defining Injection point by using @Inject annotation


JSR 330's javax.inject.@Inject annotation can be used in place of Spring's @Autowired
annotation.

Starting with Spring 3.0, Spring offers support for JSR 330 standard annotations
(Dependency Injection). Those annotations are scanned in the same way as the Spring
annotations.

Example

public class GreetingService {

public String getGreeting(String name) {

return "Hi there, " + name;

Using @Inject annotation

public class Greeter {

@Inject

private GreetingService greetingService;

public void showGreeting(String name){

System.out.println(greetingService.getGreeting(name));

3
Piseth Java School

Defining beans and running the example app

@Configuration

public class AppRunner {

@Bean

public GreetingService greetingService() {

return new GreetingService();

@Bean

public Greeter greeter() {

return new Greeter();

public static void main(String... strings) {

AnnotationConfigApplicationContext context = new


AnnotationConfigApplicationContext(AppRunner.class);

Greeter greeter = context.getBean(Greeter.class);

greeter.showGreeting("Piseth");

Output: Hi there, Piseth

4
Piseth Java School

3 - Using @Autowired annotation on arbitrary methods


@Autowired annotation can be used on the methods with arbitrary names and multiple
arguments:

@Autowired

public void configure(GreetingService greetingService, LocalDateTime appStartTime) {

....

Example

public class GreetingService {

public String getGreeting(String name) {

return "Hi there, " + name;

Using @Autowired at arbitrary methods

public class Greeter {

private String greetingFormat;

@Autowired

public void configure(GreetingService greetingService, LocalDateTime appServiceTime) {

greetingFormat = String.format("%s. This app is running since: %s%n",


greetingService.getGreeting("<NAME>"),

appServiceTime.format(DateTimeFormatter.ofPattern("YYYY-MMM-d")));

5
Piseth Java School

public void showGreeting(String name) {

System.out.printf(greetingFormat.replaceAll("<NAME>", name));

Defining beans and running the example

@Configuration

public class AppRunner {

@Bean

public GreetingService greetingService() {

return new GreetingService();

@Bean

public LocalDateTime appServiceTime() {

return LocalDate.of(2022, 7, 17).atStartOfDay();

@Bean

public Greeter greeter() {

return new Greeter();

6
Piseth Java School

public static void main(String... strings) {

AnnotationConfigApplicationContext context = new


AnnotationConfigApplicationContext(AppRunner.class);

Greeter greeter = context.getBean(Greeter.class);

greeter.showGreeting("Piseth");

Output

Hi there, Piseth. This app is running since: 2022-July-17

You might also like