Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему 2. Java Spring Core 3. Spring IoC Container

Содержание

The Spring ContainerThe container will: create the objects wire them together configure them manage their complete lifecycle from creation till destruction. These objects are called Spring Beans *Victor Mozharsky
2. Spring Core3. Spring IoC Container The Spring ContainerThe container will: create the objects wire them together configure Dependency InjectionThe Spring container uses dependency injection (DI) to manage the componentsIn DI Implementation*Victor Mozharsky Container’s MetadataThe container gets its instructions on what objects to instantiate, configure, How Spring Works*Victor Mozharsky Spring Bean DefinitionThe objects that form the backbone of your application and XML Metadata  *Victor Mozharsky Spring Bean DefinitionEach bean definition can contain a set of the following Bean Definition AttributesClass attribute is mandatory and specify the bean class to Spring Tool Suite InstallationOpen Eclipse -> Help -> Eclipse Marketplace…Find = STS Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate project Example 1. Create Spring ProjectFile -> New -> Other.. -> Spring -> Example 1. Create Spring ProjectRemove from com.bionic.edu package (src/main/java) template files Service.java Example 1. Logging Dependencies* Add Dependencies to the pom.xml FileOpen pom.xml -> Dependencies tab -> select Further pom.xml TuningSelect log4j (1.2.14) dependency and click Remove buttonGo to pom.xml Maven clean&install actionsRight click on the project’s name -> Maven -> Update Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate project Example 1. log4j2.xml in resources Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate project E1. GreetingService Interfacepackage com.bionic.edu; public interface GreetingService {	void sendGreeting();}*Victor Mozharsky E1. HelloWorldService Classpackage com.bionic.edu; public class HelloWorldService implements 		GreetingService {   public E1. HelloKittyService Classpackage com.bionic.edu; public class HelloKittyService implements 			GreetingService {   public Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate project Bean DefinitionThe element tells Spring to create an object for you. The Example 1. Bean Definition*Victor Mozharsky Example 1. Configuration FileRight click on src/main/resources -> New -> FileFill File Example 1. Configuration File     *Victor Mozharsky Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate project Application Context You can load the Spring application context using the following Example 1. Application Classpackage com.bionic.edu;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Application { Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate project Example 1.Run application. You will get		Hello, world!See P211BeanDefinition project for the full text*Victor Mozharsky Injecting through ConstructorsA class can be constructed in two different ways:Using the Example 2. HelloWorldService package com.bionic.edu;public class HelloWorldService implements GreetingService { Example 2. Bean Definition   *Victor Mozharsky Example 2.Run application. You will get		Hello, world! I am Victor.See P212ConstructorInjection project Injecting Object ReferencesYou should use ref attribute in a for passing references to other beans*Victor Mozharsky Example 3. Application Classpublic class Application {   GreetingService greeting = Example 3. Bean Definition        *Victor Mozharsky Example 3 OutputHello, world! I am Victor.*Victor Mozharsky Example 3. Bean Definition         *Victor Mozharsky Example 3 OutputHello, Kitty!See P213ConstructorInjection project for the full text*Victor Mozharsky Property TagsYou can use tag to pass the values of different variables Example 4. Simple Value InjectionAdd accessor to HelloWorldService classChange beans.xml as follows Example 4. OutputHello, world! I am Victor.See P214PropertySimple project for the full text*Victor Mozharsky Simple Value Injection isn’t limited to injecting String valuesThe value attribute can Example 5. Numeric Injection public class HelloWorldService implements GreetingService { Example 5. beans.xml          *Victor Mozharsky Example 5. OutputHello, world! I am Victor.Hello, world! I am Victor.Hello, world! Object InjectionThe real value of DI is found in wiring an application’s Example 5. Reference InjectionAdd getter&setter for greeting field of Application classChange beans.xml Example 5. OutputHello, Kitty!*Victor Mozharsky Example 5. Bean.xml Changes       *Victor Mozharsky Example 5. OutputHello, world! I am Victor.See P216PropertyRef project for the full text*Victor Mozharsky Auto WiringIn large applications, the number of beans will increase and the Auto-Wiring based on AnnotationsUse the tag in spring-context.xml Use the @Inject annotation The @Inject annotation The @Inject annotation can be used to qualify: a AutodiscoveryBy default, looks for classes that are annotated as:@Component - indicates that @Component vs @Named@Named and @Component annotations are used enabling a class to Example 6. AnnotationsCreate Spring project with name P221FirstInjectTune pom.xml fileTune beans.xnm fileCreate application classesRun application*Victor Mozharsky Example 6. pom.xml Add the following dependency to the project’s pom.xml file:	javax.inject	javax.inject	1*Victor Mozharsky Example 6. beans.xmlCreate the following beans.xml file:  *Victor Mozharsky Example 6. HelloWorldServicepackage com.bionic.edu;import javax.inject.Named;@Namedpublic class HelloWorldService implements GreetingService {  public Example 6. Application Class@Namedpublic class Application {  @Inject  GreetingService greeting Example 6. OutputHello, world! See P221FirstInject project for the full text*Victor Mozharsky Example 7. Autowiring by NameAnnotate HelloKittyService class with @Named:package com.bionic.edu;import javax.inject.Named;@Namedpublic class Example 7. OutputRunning the application leads to an exceptionException in thread The @Named Annotation If multiple bean types are available for injection, then Example 7. @Named Annotation@Namedpublic class Application {  @Inject  @Named( Example 7. OutputHello, world! *Victor Mozharsky Example 7. @Named Annotation@Namedpublic class Application {  @Inject  @Named( Example 7. OutputHello, Kitty!See P222InjectByName project for the full text *Victor Mozharsky
Слайды презентации

Слайд 2 The Spring Container
The container will:
create the objects

The Spring ContainerThe container will: create the objects wire them together

wire them together
configure them
manage their complete lifecycle

from creation till destruction.
These objects are called Spring Beans

*

Victor Mozharsky


Слайд 3 Dependency Injection
The Spring container uses dependency injection (DI)

Dependency InjectionThe Spring container uses dependency injection (DI) to manage the

to manage the components
In a complex Java application classes

should be as independent as possible to increase the possibility to reuse these classes and to test them independently
Dependency Injection helps in connecting these classes together and same time keeping them independent.

*

Victor Mozharsky


Слайд 4 DI Implementation
*
Victor Mozharsky

DI Implementation*Victor Mozharsky

Слайд 5 Container’s Metadata
The container gets its instructions on what

Container’s MetadataThe container gets its instructions on what objects to instantiate,

objects to instantiate, configure, and assemble by reading configuration

metadata provided:
by XML
Java annotations
Java code

*

Victor Mozharsky


Слайд 6 How Spring Works

*
Victor Mozharsky

How Spring Works*Victor Mozharsky

Слайд 7 Spring Bean Definition
The objects that form the backbone

Spring Bean DefinitionThe objects that form the backbone of your application

of your application and that are managed by the

Spring IoC container are called beans
The bean definition contains the information called configuration metadata which is needed for the container to know:
How to create a bean
Bean's lifecycle details
Bean's dependencies

*

Victor Mozharsky


Слайд 8 XML Metadata

XML Metadata *Victor Mozharsky


xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">




*

Victor Mozharsky


Слайд 9 Spring Bean Definition
Each bean definition can contain a

Spring Bean DefinitionEach bean definition can contain a set of the

set of the following properties:
Class
Name
Scope
constructor-arg
Properties
autowiring mode
lazy-initialization mode
initialization method
destruction method


*

Victor Mozharsky


Слайд 10 Bean Definition Attributes
Class attribute is mandatory and specify

Bean Definition AttributesClass attribute is mandatory and specify the bean class

the bean class to be used to create the

bean
Name attribute specifies the bean identifier uniquely. In XML-based configuration metadata, you use the id and/or name attributes to specify the bean identifier(s)
Properties is used to inject the dependencies

*

Victor Mozharsky


Слайд 11 Spring Tool Suite Installation
Open Eclipse -> Help ->

Spring Tool Suite InstallationOpen Eclipse -> Help -> Eclipse Marketplace…Find =

Eclipse Marketplace…
Find = STS -> click Find button ->

select STS for Eclipse Luna -> Install button -> Confirm -> I accept -> Finish
Restart Eclipse

*

Victor Mozharsky


Слайд 12 Example 1. Hello World in Spring
Create Spring project
Tune

Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate

project for logging
Create project classes (POJOs)
Create Spring metadata
Create application

context
Run application

*

Victor Mozharsky


Слайд 13 Example 1. Create Spring Project
File -> New ->

Example 1. Create Spring ProjectFile -> New -> Other.. -> Spring

Other.. -> Spring -> Spring project -> Next
Project name

= P211BeanDefinition, Templates = Simple Spring Utility Project -> Next
Package = com.bionic.edu -> Finish

*

Victor Mozharsky


Слайд 14 Example 1. Create Spring Project
Remove from com.bionic.edu package

Example 1. Create Spring ProjectRemove from com.bionic.edu package (src/main/java) template files

(src/main/java) template files Service.java and ExampleService.java
Remove from com.bionic.edu package

(src/test/java) template files ExampleConfigurationTests.java and ExampleServiceTests.java

*

Victor Mozharsky


Слайд 15 Example 1. Logging Dependencies
*

Example 1. Logging Dependencies*

Слайд 16 Add Dependencies to the pom.xml File
Open pom.xml ->

Add Dependencies to the pom.xml FileOpen pom.xml -> Dependencies tab ->

Dependencies tab -> select junit: 3.8.1[test] -> Properties ->

change version to 4.7 -> Ok
Press Add button -> GroupId = org.slf4j, ArifactId = slf4j-api, Vesion = 1.7.5 -> Ok
Press Add button -> GroupId = org.apache. logging.log4j, ArtifactId = log4j-api, Version = 2.0.2 -> Ok
And so on… Then -> Save

*


Слайд 17 Further pom.xml Tuning
Select log4j (1.2.14) dependency and click

Further pom.xml TuningSelect log4j (1.2.14) dependency and click Remove buttonGo to

Remove button
Go to pom.xml tag and change 1.5 Java

version to 1.8 both in and tags of maven-compiler-plugin artefact
Change Spring version to 4.1.1.RELEASE in tag
Save pom.xml file

*

Victor Mozharsky


Слайд 18 Maven clean&install actions
Right click on the project’s name

Maven clean&install actionsRight click on the project’s name -> Maven ->

-> Maven -> Update project -> Ok
Right click on

the project’s name -> Run As… -> Maven clean
Right click on the project’s name -> Run As… -> Maven install

*


Слайд 19 Example 1. Hello World in Spring
Create Spring project
Tune

Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate

project for logging
Create project classes (POJOs)
Create Spring metadata
Create application

context
Run application

*

Victor Mozharsky


Слайд 20 Example 1. log4j2.xml in resources


Example 1. log4j2.xml in resources












*

Victor Mozharsky


Слайд 21 Example 1. Hello World in Spring
Create Spring project
Tune

Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate

project for logging
Create project classes (POJOs)
Create Spring metadata
Create application

context
Run application

*

Victor Mozharsky


Слайд 22 E1. GreetingService Interface
package com.bionic.edu;
 
public interface GreetingService {
void sendGreeting();
}

*
Victor

E1. GreetingService Interfacepackage com.bionic.edu; public interface GreetingService {	void sendGreeting();}*Victor Mozharsky

Mozharsky


Слайд 23 E1. HelloWorldService Class
package com.bionic.edu;
 
public class HelloWorldService implements
GreetingService

E1. HelloWorldService Classpackage com.bionic.edu; public class HelloWorldService implements 		GreetingService {  public

{
public void sendGreeting() {
System.out.println("Hello, world!");

}
}

*

Victor Mozharsky


Слайд 24 E1. HelloKittyService Class
package com.bionic.edu;
 
public class HelloKittyService implements GreetingService

E1. HelloKittyService Classpackage com.bionic.edu; public class HelloKittyService implements 			GreetingService {  public

{
public void sendGreeting(){
System.out.println("Hello, Kitty!");

}
}

*

Victor Mozharsky


Слайд 25 Example 1. Hello World in Spring
Create Spring project
Tune

Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate

project for logging
Create project classes (POJOs)
Create Spring metadata
Create application

context
Run application

*

Victor Mozharsky


Слайд 26 Bean Definition
The element tells Spring to create

Bean DefinitionThe element tells Spring to create an object for you.

an object for you.
The id attribute gives the

bean a name by which it’ll be referred to in the Spring container.
When the Spring container loads its beans, it’ll instantiate the bean using the default constructor.

*

Victor Mozharsky


Слайд 27 Example 1. Bean Definition


*
Victor Mozharsky

Example 1. Bean Definition*Victor Mozharsky

Слайд 28 Example 1. Configuration File
Right click on src/main/resources ->

Example 1. Configuration FileRight click on src/main/resources -> New -> FileFill

New -> File
Fill File name with configuration file Id

(beans.xml) -> Finish
Create configuration file context (see next slide) -> Save

*

Victor Mozharsky


Слайд 29 Example 1. Configuration File

Example 1. Configuration File   *Victor Mozharsky

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">




*

Victor Mozharsky


Слайд 30 Example 1. Hello World in Spring
Create Spring project
Tune

Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate

project for logging
Create project classes (POJOs)
Create Spring metadata
Create application

context
Run application

*

Victor Mozharsky


Слайд 31 Application Context
You can load the Spring application

Application Context You can load the Spring application context using the

context using the following code:

ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

GreetingService service = (GreetingService)ctx.getBean("helloWorldService");
service.sendGreeting();

*

Victor Mozharsky


Слайд 32 Example 1. Application Class
package com.bionic.edu;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class

Example 1. Application Classpackage com.bionic.edu;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Application {

Application {

public static void main(String[] args)

{
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
GreetingService service =
(GreetingService)ctx.getBean("helloWorldService");
service.sendGreeting();
}
}

*

Victor Mozharsky


Слайд 33 Example 1. Hello World in Spring
Create Spring project
Tune

Example 1. Hello World in SpringCreate Spring projectTune project for loggingCreate

project for logging
Create project classes (POJOs)
Create Spring metadata
Create application

context
Run application

*

Victor Mozharsky


Слайд 34 Example 1.
Run application. You will get
Hello, world!

See P211BeanDefinition

Example 1.Run application. You will get		Hello, world!See P211BeanDefinition project for the full text*Victor Mozharsky

project for the full text
*
Victor Mozharsky


Слайд 35 Injecting through Constructors
A class can be constructed in

Injecting through ConstructorsA class can be constructed in two different ways:Using

two different ways:
Using the default constructor
Using a constructor that

takes an argument(s)
If no are given in a bean definition, the default constructor is used.
A with a value attribute leads to the other constructor will be used instead.

*

Victor Mozharsky


Слайд 36 Example 2. HelloWorldService
package com.bionic.edu;
public class HelloWorldService implements

Example 2. HelloWorldService package com.bionic.edu;public class HelloWorldService implements GreetingService {

GreetingService {
public String message;

public HelloWorldService(){ message = ""; }
public HelloWorldService(String message){
this.message = message;
}
public void sendGreeting() {
System.out.println("Hello, world! " + message);
}
}

*

Victor Mozharsky


Слайд 37 Example 2. Bean Definition

Example 2. Bean Definition  *Victor Mozharsky

class="com.bionic.edu.HelloWorldService">



*
Victor Mozharsky


Слайд 38 Example 2.
Run application. You will get
Hello, world! I

Example 2.Run application. You will get		Hello, world! I am Victor.See P212ConstructorInjection

am Victor.

See P212ConstructorInjection project for the full text
*
Victor Mozharsky


Слайд 39 Injecting Object References
You should use ref attribute in

Injecting Object ReferencesYou should use ref attribute in a for passing references to other beans*Victor Mozharsky

a for passing references to other beans

*
Victor Mozharsky


Слайд 40 Example 3. Application Class
public class Application {

Example 3. Application Classpublic class Application {  GreetingService greeting =

GreetingService greeting = null;
public Application(){}

public Application(GreetingService greeting){ this.greeting = greeting; }

public static void main(String[] args) {
ApplicationContext ctx = new
ClassPathXmlApplicationContext("beans.xml");
Application application = (Application)ctx.getBean("application");
application.start();
}
public void start(){
if (greeting != null) greeting.sendGreeting();
} }

*

Victor Mozharsky


Слайд 41 Example 3. Bean Definition

Example 3. Bean Definition     *Victor Mozharsky






*

Victor Mozharsky


Слайд 42 Example 3 Output
Hello, world! I am Victor.
*
Victor Mozharsky

Example 3 OutputHello, world! I am Victor.*Victor Mozharsky

Слайд 43 Example 3. Bean Definition

Example 3. Bean Definition      *Victor Mozharsky




class="com.bionic.edu.HelloKittyService" />



*

Victor Mozharsky


Слайд 44 Example 3 Output
Hello, Kitty!

See P213ConstructorInjection project for the

Example 3 OutputHello, Kitty!See P213ConstructorInjection project for the full text*Victor Mozharsky

full text
*
Victor Mozharsky


Слайд 45 Property Tags
You can use tag to pass

Property TagsYou can use tag to pass the values of different

the values of different variables used at the time

of object creation
is similar to in many ways, except that instead of injecting values through a constructor argument, injects by calling a property’s setter method.


*

Victor Mozharsky


Слайд 46 Example 4. Simple Value Injection
Add accessor to HelloWorldService

Example 4. Simple Value InjectionAdd accessor to HelloWorldService classChange beans.xml as

class
Change beans.xml as follows


value="I am Victor." />





*

Victor Mozharsky


Слайд 47 Example 4. Output
Hello, world! I am Victor.

See P214PropertySimple

Example 4. OutputHello, world! I am Victor.See P214PropertySimple project for the full text*Victor Mozharsky

project for the full text



*
Victor Mozharsky


Слайд 48 Simple Value Injection
isn’t limited to injecting String

Simple Value Injection isn’t limited to injecting String valuesThe value attribute

values
The value attribute can also specify numeric (int, float,

java.lang.Double, and so on) values as well as boolean values

*

Victor Mozharsky


Слайд 49 Example 5. Numeric Injection
public class HelloWorldService implements

Example 5. Numeric Injection public class HelloWorldService implements GreetingService {

GreetingService {
public String message;

public int repeat;

// constructors, getters&setters

public void sendGreeting() {
for (int i = 0; i < repeat; i++){
System.out.println("Hello, world! " + message);
}
}}

*

Victor Mozharsky


Слайд 50 Example 5. beans.xml

Example 5. beans.xml      *Victor Mozharsky

name="message" value="I am Victor." />

value="3" />





*

Victor Mozharsky


Слайд 51 Example 5. Output
Hello, world! I am Victor.
Hello, world!

Example 5. OutputHello, world! I am Victor.Hello, world! I am Victor.Hello,

I am Victor.
Hello, world! I am Victor.

See P215NumericInjection project

for the full text



*

Victor Mozharsky


Слайд 52 Object Injection
The real value of DI is found

Object InjectionThe real value of DI is found in wiring an

in wiring an application’s collaborating objects together so that

they don’t have to wire themselves together
Use ref attribute of tag for this purpose

*

Victor Mozharsky


Слайд 53 Example 5. Reference Injection
Add getter&setter for greeting field

Example 5. Reference InjectionAdd getter&setter for greeting field of Application classChange

of Application class
Change beans.xml as follows








*

Victor Mozharsky


Слайд 54 Example 5. Output
Hello, Kitty!
*
Victor Mozharsky

Example 5. OutputHello, Kitty!*Victor Mozharsky

Слайд 55 Example 5. Bean.xml Changes

Example 5. Bean.xml Changes    *Victor Mozharsky




name="application" class="com.bionic.edu.Application">



*

Victor Mozharsky


Слайд 56 Example 5. Output
Hello, world! I am Victor.

See P216PropertyRef

Example 5. OutputHello, world! I am Victor.See P216PropertyRef project for the full text*Victor Mozharsky

project for the full text



*
Victor Mozharsky


Слайд 57 Auto Wiring
In large applications, the number of beans

Auto WiringIn large applications, the number of beans will increase and

will increase and the corresponding XML written to configure

the numerous beans will become very large
Spring provides a feature called 'Auto-Wiring' that minimizes the XML to be written provided that certain assumptions are made about the nomenclature of beans and properties
Spring provides auto-wiring based on both XML and Annotations

*

Victor Mozharsky


Слайд 58 Auto-Wiring based on Annotations
Use the tag in

Auto-Wiring based on AnnotationsUse the tag in spring-context.xml Use the @Inject

spring-context.xml
Use the @Inject annotation to qualify either the

member or a corresponding method (usually the setter method) which takes the injected type as argument

*

Victor Mozharsky


Слайд 59 The @Inject annotation
The @Inject annotation can be

The @Inject annotation The @Inject annotation can be used to qualify:

used to qualify:
a member
any method (including setter

method) which takes the injected type as argument

*

Victor Mozharsky


Слайд 60 Autodiscovery
By default, looks for classes that are annotated

AutodiscoveryBy default, looks for classes that are annotated as:@Component - indicates

as:
@Component - indicates that the class is a Spring

component
@Controller - indicates that the class defines a Spring MVC controller
@Repository - the class defines a data repository
@Service - the class defines a service
Any custom annotation that is itself annotated with @Component

*

Victor Mozharsky


Слайд 61 @Component vs @Named
@Named and @Component annotations are used

@Component vs @Named@Named and @Component annotations are used enabling a class

enabling a class to be auto detected as the

bean definition for spring’s application context
@Named is part of the Java specification JSR-330. It is more recommended since this annotation is not tied to Spring APIs.
@Component is part of the Spring’s annotations library.

*

Victor Mozharsky


Слайд 62 Example 6. Annotations
Create Spring project with name P221FirstInject
Tune

Example 6. AnnotationsCreate Spring project with name P221FirstInjectTune pom.xml fileTune beans.xnm fileCreate application classesRun application*Victor Mozharsky

pom.xml file
Tune beans.xnm file
Create application classes
Run application
*
Victor Mozharsky


Слайд 63 Example 6. pom.xml
Add the following dependency to

Example 6. pom.xml Add the following dependency to the project’s pom.xml file:	javax.inject	javax.inject	1*Victor Mozharsky

the project’s pom.xml file:

javax.inject
javax.inject
1

*
Victor Mozharsky


Слайд 64 Example 6. beans.xml
Create the following beans.xml file:

Example 6. beans.xmlCreate the following beans.xml file: *Victor Mozharsky

encoding="UTF-8"?>

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">




*

Victor Mozharsky


Слайд 65 Example 6. HelloWorldService
package com.bionic.edu;
import javax.inject.Named;
@Named
public class HelloWorldService implements

Example 6. HelloWorldServicepackage com.bionic.edu;import javax.inject.Named;@Namedpublic class HelloWorldService implements GreetingService { public

GreetingService {
public String message;
public int

repeat;
. . . . . . . . . . . . . . . .
public void sendGreeting() {
for (int i = 0; i < repeat; i++){
System.out.println("Hello, world! " + message);
}
}
}

*

Victor Mozharsky


Слайд 66 Example 6. Application Class
@Named
public class Application {

Example 6. Application Class@Namedpublic class Application { @Inject GreetingService greeting =

@Inject
GreetingService greeting = null;
. .

. . . . . . . . . . . . . .
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Application application = (Application)ctx.getBean("application");
application.start();
}
public void start(){
if (greeting != null) greeting.sendGreeting();
}}

*

Victor Mozharsky


Слайд 67 Example 6. Output
Hello, world!

See P221FirstInject project for

Example 6. OutputHello, world! See P221FirstInject project for the full text*Victor Mozharsky

the full text
*
Victor Mozharsky


Слайд 68 Example 7. Autowiring by Name
Annotate HelloKittyService class with

Example 7. Autowiring by NameAnnotate HelloKittyService class with @Named:package com.bionic.edu;import javax.inject.Named;@Namedpublic

@Named:
package com.bionic.edu;
import javax.inject.Named;
@Named
public class HelloKittyService implements GreetingService {

public void sendGreeting(){
System.out.println("Hello, Kitty!");
}
}

*

Victor Mozharsky


Слайд 69 Example 7. Output
Running the application leads to an

Example 7. OutputRunning the application leads to an exceptionException in thread

exception
Exception in thread "main" org.springframework.beans.factory.BeanCreationException:
Error creating bean with

name 'application': Injection of autowired dependencies failed;
. . . . . . . . .
No unique bean of type [com.bionic.edu.GreetingService] is defined:
expected single matching bean but found 2: [helloKittyService, helloWorldService]

*

Victor Mozharsky


Слайд 70 The @Named Annotation
If multiple bean types are

The @Named Annotation If multiple bean types are available for injection,

available for injection, then Spring will be unable to

make a decision on which bean to inject and will throw an Exception
In such cases, we can use the @Named(name="..") annotation and give the name of the bean that we want Spring to inject.

*

Victor Mozharsky


Слайд 71 Example 7. @Named Annotation
@Named
public class Application {

Example 7. @Named Annotation@Namedpublic class Application { @Inject @Named(

@Inject
@Named("helloWorldService")
GreetingService greeting = null;

. . . . . . . . . . . . . . . .
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Application application = (Application)ctx.getBean("application");
application.start();
}
. . . . . . . . . . . . . . . .

*

Victor Mozharsky


Слайд 72 Example 7. Output
Hello, world!


*
Victor Mozharsky

Example 7. OutputHello, world! *Victor Mozharsky

Слайд 73 Example 7. @Named Annotation
@Named
public class Application {

Example 7. @Named Annotation@Namedpublic class Application { @Inject @Named(

@Inject
@Named("helloKittyService")
GreetingService greeting = null;

. . . . . . . . . . . . . . . .
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
Application application = (Application)ctx.getBean("application");
application.start();
}
. . . . . . . . . . . . . . . .

*

Victor Mozharsky


  • Имя файла: 2-java-spring-core-3-spring-ioc-container.pptx
  • Количество просмотров: 128
  • Количество скачиваний: 0