在Spring框架中,scope決定了bean的生命周期和范圍。Spring提供了幾種內置的scope,包括singleton、prototype、request、session和global-session。要設置bean的scope,您需要在bean定義中使用@Scope
注解或在XML配置文件中使用<bean>
元素的scope
屬性。
以下是使用不同方法設置Spring scope的示例:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
@Configuration
public class AppConfig {
@Bean
@Scope("prototype")
public MyBean myBean() {
return new MyBean();
}
}
<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.xsd">
<bean id="myBean" class="com.example.MyBean" scope="prototype"/>
</beans>
如果您使用組件掃描和自動裝配,可以在類上使用@Component
注解,并在需要的地方使用@Autowired
注解。Spring會自動識別bean的scope并進行注入。
import org.springframework.stereotype.Component;
@Component
public class MyBean {
// ...
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class AnotherComponent {
private final MyBean myBean;
@Autowired
public AnotherComponent(MyBean myBean) {
this.myBean = myBean;
}
// ...
}
在這些示例中,我們設置了bean的scope為prototype。您可以根據需要更改為其他內置scope或自定義scope。