Wiosna - Bean Scopes
Podczas definiowania <fasoli> masz możliwość zadeklarowania zakresu dla tej fasoli. Na przykład, aby zmusić Spring do tworzenia nowej instancji fasoli za każdym razem, gdy jest ona potrzebna, należy zadeklarować atrybut scope fasoli jakoprototype. Podobnie, jeśli chcesz, aby Spring zwracał tę samą instancję bean za każdym razem, gdy jest to potrzebne, powinieneś zadeklarować atrybut scope fasoli jakosingleton.
Spring Framework obsługuje następujące pięć zakresów, z których trzy są dostępne tylko w przypadku korzystania z ApplicationContext obsługującego sieć WWW.
Sr.No. | Zakres i opis |
---|---|
1 | singleton Powoduje to zakres definicji komponentu bean do pojedynczego wystąpienia na kontener Spring IoC (ustawienie domyślne). |
2 | prototype Powoduje to, że definicja pojedynczego komponentu bean ma dowolną liczbę wystąpień obiektu. |
3 | request To określa zakres definicji komponentu bean do żądania HTTP. Prawidłowe tylko w kontekście kontekstu Spring ApplicationContext obsługującego sieć. |
4 | session To określa zakres definicji komponentu bean w sesji HTTP. Prawidłowe tylko w kontekście kontekstu Spring ApplicationContext obsługującego sieć. |
5 | global-session To określa zakres definicji komponentu bean do globalnej sesji HTTP. Prawidłowe tylko w kontekście kontekstu Spring ApplicationContext obsługującego sieć. |
W tym rozdziale omówimy pierwsze dwa zakresy, a pozostałe trzy zostaną omówione podczas omawiania kontekstu Spring ApplicationContext obsługującego sieci WWW.
Zakres singletonowy
Jeśli zakres jest ustawiony na pojedynczy, kontener Spring IoC tworzy dokładnie jedno wystąpienie obiektu zdefiniowanego przez tę definicję fasoli. Ta pojedyncza instancja jest przechowywana w pamięci podręcznej takich pojedynczych ziaren, a wszystkie kolejne żądania i odwołania do tej nazwanej fasoli zwracają buforowany obiekt.
Zakres domyślny to zawsze pojedynczy. Jeśli jednak potrzebujesz jednego i tylko jednego wystąpienia fasoli, możesz ustawićscope właściwość do singleton w pliku konfiguracyjnym bean, jak pokazano w poniższym fragmencie kodu -
<!-- A bean definition with singleton scope -->
<bean id = "..." class = "..." scope = "singleton">
<!-- collaborators and configuration for this bean go here -->
</bean>
Przykład
Przygotujmy działające środowisko Eclipse IDE i wykonaj następujące czynności, aby utworzyć aplikację Spring -
Kroki | Opis |
---|---|
1 | Utwórz projekt o nazwie SpringExample i utwórz pakiet com.tutorialspoint w obszarzesrc folder w utworzonym projekcie. |
2 | Dodaj wymagane biblioteki Spring za pomocą opcji Dodaj zewnętrzne pliki JAR , jak wyjaśniono w rozdziale Spring Hello World Example . |
3 | Utwórz klasy Java HelloWorld i MainApp w pakiecie com.tutorialspoint . |
4 | Utwórz plik konfiguracyjny Beans Beans.xml w obszarzesrc teczka. |
5 | Ostatnim krokiem jest utworzenie zawartości wszystkich plików Java i pliku konfiguracyjnego Bean i uruchomienie aplikacji, jak wyjaśniono poniżej. |
Oto treść HelloWorld.java plik -
package com.tutorialspoint;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
}
Poniżej znajduje się zawartość MainApp.java plik -
package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld objA = (HelloWorld) context.getBean("helloWorld");
objA.setMessage("I'm object A");
objA.getMessage();
HelloWorld objB = (HelloWorld) context.getBean("helloWorld");
objB.getMessage();
}
}
Poniżej znajduje się plik konfiguracyjny Beans.xml wymagane dla zakresu pojedynczego -
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
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">
<bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "singleton">
</bean>
</beans>
Po utworzeniu plików źródłowych i konfiguracyjnych komponentów bean uruchom aplikację. Jeśli wszystko jest w porządku z Twoją aplikacją, wydrukuje następujący komunikat -
Your Message : I'm object A
Your Message : I'm object A
Zakres prototypu
Jeśli zakres jest ustawiony na prototyp, kontener Spring IoC tworzy nową instancję komponentu bean obiektu za każdym razem, gdy zostanie wysłane żądanie dotyczące tego konkretnego komponentu bean. Z reguły należy używać zakresu prototypu dla wszystkich ziaren pełnostanowych i zakresu pojedynczego dla bezstanowych.
Aby zdefiniować zakres prototypu, możesz ustawić scope właściwość do prototype w pliku konfiguracyjnym bean, jak pokazano w poniższym fragmencie kodu -
<!-- A bean definition with prototype scope -->
<bean id = "..." class = "..." scope = "prototype">
<!-- collaborators and configuration for this bean go here -->
</bean>
Przykład
Przygotujmy działające środowisko Eclipse IDE i wykonaj następujące kroki, aby utworzyć aplikację Spring -
Kroki | Opis |
---|---|
1 | Utwórz projekt o nazwie SpringExample i utwórz pakiet com.tutorialspoint w obszarzesrc folder w utworzonym projekcie. |
2 | Dodaj wymagane biblioteki Spring za pomocą opcji Dodaj zewnętrzne pliki JAR , jak wyjaśniono w rozdziale Spring Hello World Example . |
3 | Utwórz klasy Java HelloWorld i MainApp w pakiecie com.tutorialspoint . |
4 | Utwórz plik konfiguracyjny Beans Beans.xml w obszarzesrc teczka. |
5 | Ostatnim krokiem jest utworzenie zawartości wszystkich plików Java i pliku konfiguracyjnego Bean i uruchomienie aplikacji, jak wyjaśniono poniżej. |
Oto treść HelloWorld.java plik
package com.tutorialspoint;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
}
Poniżej znajduje się zawartość MainApp.java plik -
package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld objA = (HelloWorld) context.getBean("helloWorld");
objA.setMessage("I'm object A");
objA.getMessage();
HelloWorld objB = (HelloWorld) context.getBean("helloWorld");
objB.getMessage();
}
}
Poniżej znajduje się plik konfiguracyjny Beans.xml wymagane dla zakresu prototypu -
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
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">
<bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld" scope = "prototype">
</bean>
</beans>
Po utworzeniu plików źródłowych i konfiguracyjnych komponentów bean uruchom aplikację. Jeśli wszystko jest w porządku z Twoją aplikacją, wydrukuje następujący komunikat -
Your Message : I'm object A
Your Message : null