第二章 Spring常用配置

第二章 Spring常用配置

2.1 Bean的Scope

@Scope注解
(1) singleton:一個Spring容器中只有一個Bean實例,<b>此為Spring的默認配置,全容器共享一個實例</b>
(2) prototype : 每次調用都會新建一個Bean的實例。
(3) request : Web項目中,每個http request都會新建一個Bean的實例。
(4) session : Web項目中,每個http session都會新建一個Bean的實例。
(5) golobalSession : 這個只在portal應用中有用,給每個global http session新建一個Bean的實例。

  @Service
  @Scope("prototype")
  public class DemoPrototypeService {
  
  } 
2.2 Spring EL和資源調用

Spring EL-Spring表達式語言,支持在xml和注解中使用表達式。

使用@Value注入。

  // 注入普通字符串
  @Value("普通字符串")
  private String normalString;
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.3</version>
  </dependency>

  @Configuration
  @PropertySource("classpath : test.properties")
  public class ELConfig {
    // 注入普通字符串
    @Value("I Love U !")
    private String normal;

    // 注入操作系統屬性
    @Value(#{systemProperties['os.name']})
    private String osName;

    // 注入表達式結果
    @Value("#{ T(java.lang.Math).random() * 100.0}")
    private double randomNumber;

    // 注入其他Bean屬性
    @Value("#{demoService.another}")
    private String fromAnother;

    // 注入文件資源
    @Value("classpath : test.txt")
    private Resource testFile;

    // 注入網址資源
    @Value("http://www.baidu.com")
    private Resourct testUrl;

    // 注入配置文件
    @Value("${book.name}")
    private String bookName;

    @Autowired
    private Environment environment;

    @Bean
    public static PropertySourcesPlaceholerConfigurer propertyConfig() {
      return new PropertySourcesPlaceholerConfigurer();
    }
    ...
  }
2.3 Bean的初始化和銷毀

Spring對Bean的生命周期的操作提供了支持。

(1) Java配置方式: 使用@Bean的initMethod和destroyMethod(相當于xml配置的init-method和destroy-method)。

  @Bean(initMethod="init", destroyMethod="destroy") // init和destroy是兩個方法的名字

(2)注解方式: 利用JSR-250的@PostConstruct和@PreDestory。

  • @PostConstruct,在構造函數執行完之后執行。
  • @PreDestory,在Bean銷毀之前執行。
  <dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>jsr250-api</artifactId>
    <version>1.0</version>
  </dependency>

  public class JSR250WayService {
    @PostConstruct
    public void init() {
    }

    public JSR250WayService () {
    
    }
    
    @PreDestory
    public void destroy() {
    }
  }
2.4 Profile

<p>Profile為在不同環境下使用不同的配置提供了支持。</p>

  1. 通過設定Environment的ActiveProfiles來設定當前context需要使用的配置環境。在開發中使用@Profile注解類或者方法,達到在不同情況下選在實例化不同的Bean。

  2. 通過jvm的spring.profiles.active參數來設置配置環境。

  3. Web項目設置在Servlet的context parameter中。

2.5 事件

<p>詳情見書</p>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容