1. 程式人生 > >Spring管理的bean初始化方法的三種方式,以及@PostConstruct不起作用的原因

Spring管理的bean初始化方法的三種方式,以及@PostConstruct不起作用的原因

1:Spring 容器中的 Bean 是有生命週期的spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法:

  • 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法;
  • 通過<bean> 元素的 init-method/destroy-method屬性指定初始化之後 /銷燬之前呼叫的操作方法;
  • 在指定方法上加上@PostConstruct或@PreDestroy註解來制定該方法是在初始化之後還是銷燬之前呼叫。

2:@PostConstruct不起作用的原因

專案用的spring mvc框架,配置檔案如下:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"
default-lazy-init="true">

我在service中的一個方法加上@PostConstruct註解,引用的是 javax.annotation.PostConstruct;

這個方法不是應該在初始化之前執行嗎?現在卻始終沒有執行,求大神指點

解決方法:

@PostConstruct是在物件構造完成後呼叫init-method之前執行的,你在xml中default-lazy-init="true"申明瞭延遲初始化,意味著容器剛啟動,如果這個bean沒有被呼叫,是不會初始化的,自然也就不會呼叫@PostConstruct的方法

相關推薦

Spring管理bean初始方法方式以及@PostConstruct作用原因

1:Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作

Springbean初始方式

 (1)配置檔案    <!-- 1.構造方法例項化bean -->     <bean id="book" class="service."/>     <!-- 2.使用靜態工廠方法例項化bean ,由於方法是static,可以通過類名呼

SpringBean初始方法

常用的設定方式有以下三種: 通過實現 InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法; 通過 <bean> 元素的 init-method/destroy-method屬性指定初始化之後 /銷燬之前呼叫的

Bean例項方式

-------------------siwuxie095 Bean 例項化的三種方式 1、Bean 例項化,即 在 Spring 的核心配置檔案中建立物件 編寫一個普通類(

awk執行的方式以及awk以shell指令碼檔案形式執行的注意事項

awk執行有三種形式: 1.直接以命令列來執行,如圖: 2.以awk指令碼檔案來執行 需要加-f選項。 3.以shell指令碼的形式來執行         以shell指令碼形式執行時,行首的#!/bin/bash 需變換為#!/bin/awk(awk所在的路徑

Java 多執行緒傳值有方式以及另類的第四方式

現在博主的需求是:有可能在同一個執行緒類執行不一樣的程式。上邊兩個紅框中的cron4j排程器使用的是一個,根據引數不同來執行的。如果我點選後邊的手動執行一次,按照我上邊給出的java程式碼是無法實現的。看下邊的新的程式碼: (adsbygoogle = window.adsbygoo

六、AcriveMQ集群配置的方式以及組合實現

nec 隨機 brush ast 一個隊列 項目 uri 文件 rand AcriveMQ集群配置 ·實現高可用,以排除單點故障引起的服務中斷 ·實現負載均衡以提升效率為更多客戶提供服務 集群方式

js二維陣列定義和初始方法

<script> var allarray=new Array(); var res=""; function loaddata() { for(var i=0;i<3;i++) { var starth=i*200; var strarw=i*200; var

bean例項方法

這篇文章總結了bean例項化方法Spring中bean例項方法有三種使用構造方法例項化bean使用靜態工廠例項化bean使用例項工廠例項化bean下面分別介紹這三種例項化bean方法具體操作。在介紹在三種建立bean方法前,我們先建立一個User類,我們通過建立User物件來

C語言結構體初始方法

直接上示例了 #include <stdio.h> struct student_st { char c; int score; const char *name; }; static void show_student(struct student

java Class-類載入的方法 以及類的初始的六方式 及終止執行的方式

1在命令列啟動虛擬機器jvm進行載入,2用class.forname()方法進行動態載入;3用ClassLoader.loadClass()進行動態載入;區別:用二方法載入時,還會對類進行解釋,執行其中的static語句塊;          用三方法時候,static語句塊

C語言 陣列初始常用方法({0}, memset, for迴圈賦值)以及原理

C語言 陣列初始化的三種常用方法({0}, memset, for迴圈賦值)以及原理 C語言中,陣列初始化的方式主要有三種:

springbean初始過程

在傳統的Java應用中,Bean的生命週期非常簡單。Java的關鍵詞new用來例項化Bean(或許他是非序列化的)。這樣就夠用了。相反,Bean 的生命週期在Spring容器中更加細緻。理解Spring Bean的生命週期非常重要,因為你或許要利用Spring提供的機會來訂製

Spring控制Bean初始順序2

@Order Spring 4.2 利用@Order控制配置類的載入順序 4.2 演示 兩個演示bean package com.wisely.spring4_2.order; public cl

spring(bean初始、銷燬、注入作用域)

IOC:控制反轉,也稱為依賴注入(DI)。這是一個過程。通常我們需要一個物件的時候,是主動建立物件,並且主動傳入到需要使用該物件的地方。而IOC則是由容器建立物件,注入到我們需要使用該物件的位置,兩者相比,一個主動,一個被動,被動的則是稱為依賴注入(控制反轉,由主動建立改為被動注入)。IO

Spring之jdbcTemplate:查詢的方式(單個值、單個對象、對象集合)

res finally 結構 execute date rep frame 參數 system JdbcTemplateDemo2.java 1 package helloworld.jdbcTemplate; 2 3 import org.springf

Spring MVC異常統一處理的方式

  Spring 統一異常處理有 3 種方式,分別為: 使用 @ ExceptionHandler 註解 實現 HandlerExceptionResolver 介面 使用 @controlleradvice 註解 HandlerExceptionReso

Spring管理 hibernate 事務配置的五方式

Spring配置檔案中關於事務配置總是由三個組成部分,DataSource、TransactionManager和代理機制這三部分,無論是那種配置方法,一般變化的只是代理機制這塊!   首先我建立了兩個類,一個介面一個實現: Java程式碼&

UITableViewCell初始的兩方式 (iOS開發篇)

 UITableViewCell的兩種初始化方式(dequeueReusableCellWithIdentifier): 1,不註冊cell的方式:       UITableViewCell *cell = [tableView dequeueReusableCellW

Spring Boot + Mybatis資料來源配置的方式

通過之前兩篇文章Spring Boot + JdbcTemplate和Spring Boot + Mybatis CRUD可以看出,無論是使用什麼框架,資料來源及框架的的一些配置總是不可避免的。在之前的兩篇文章中分別使用了application.properties和Java