<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                @Component 一、注解分類 1、@controller: controller控制器層(注入服務) 2、@service : service服務層(注入dao) 3、@repository : dao持久層(實現dao訪問) 4、@component: 標注一個類為Spring容器的Bean,(把普通pojo實例化到spring容器中,相當于配置文件中的<bean id="" class=""/>) 二、@Component 注解含義 @Component: 標注Spring管理的Bean,使用@Component注解在一個類上,表示將此類標記為Spring容器中的一個Bean。 ![](https://img.kancloud.cn/d8/3b/d83be78fcf20241af9b385e0cf84d5be_673x502.png) 三、基于@Component擴展的注解 @Repository: @Repository本身是基于@Component注解的擴展,被@Repository注解的POJO類表示DAO層實現,從而見到該注解就想到DAO層實現,使用方式和@Component相同; ![](https://img.kancloud.cn/8b/f9/8bf94184bb0c6f6e08c63a349a1687fe_740x544.png) @Service: @Service本身是基于@Component注解的擴展,被@Service注解的POJO類表示Service層實現,從而見到該注解就想到Service層實現,使用方式和@Component相同; ![](https://img.kancloud.cn/28/55/285528e8cef551615b601e8170ba2d62_741x539.png) @Controller: @Controller本身是基于@Component注解的擴展,被@Controller注解的類表示Web層實現,從而見到該注解就想到Web層實現,使用方式和@Component相同; ![](https://img.kancloud.cn/70/69/706956698a18da573f90e07856290268_718x542.png) Tips: 使用@Component,@Service,@Controller,@Repository注解的類,表示把這些類納入到spring容器中進行管理,同時也是表明把該類標記為Spring容器中的一個Bean。 四、component的掃描組件 下面寫這行配置是引入component的掃描組件 <context:component-scan base-package=”com.mmnc”> 其中base-package為指定需要掃描的包(含所有子包) ,掃描被@Service、@Controller、@Repository、@Component等注解標注的Java類,將其掃描注入到Spring容器,注入成Bean: @Service用于標注業務層組件 @Controller用于標注控制層組件(如struts中的action) @Repository用于標注數據訪問組件,即DAO組件. @Component泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注,標識為一個Bean。 五、方法初始化和銷毀 從Java EE5規范開始,Servlet增加了兩個影響Servlet生命周期的注解: @PostConstruct和@PreConstruct ,這兩個注解被用來修飾一個非靜態的void()方法,而且這個方法不能有拋出異常聲明,標注方法的初始化和銷毀,當你需要在系統啟動時提前設置一下變量或者設置值操作時,可以使用@PostConstruct注解進行項目啟動時設置來完成,當你需要處理關閉資源或者發送通知相關操作時可以使用@PreConstruct 完成。 1. @PostConstruct注解 被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器調用一次,類似于Servlet的inti()方法。被@PostConstruct修飾的方法會在構造函數之后,init()方法之前運行。 2. @PreDestroy注解 被@PreDestroy修飾的方法會在服務器卸載Servlet的時候運行,并且只會被服務器調用一次,類似于Servlet的destroy()方法。被@PreDestroy修飾的方法會在destroy()方法之后運行,在Servlet被徹底卸載之前。 加載順序如圖: ![](https://img.kancloud.cn/b8/f0/b8f09a5c431ede5e69770c5822d82ee8_410x665.png) 在Spring中可以使用以下方式指定初始化方法和銷毀方法(方法名任意): //對象創建并賦值之后調用 @PostConstruct public void init() { System.out.println("對象創建并賦值之后調用..."); } 和 //容器移除對象之前 @PreDestroy public void detory(){ System.out.println("容器移除對象之前執行..."); } 3. 示例 @Controller @Lazy(false) public class ServletInit { @Autowired private PCASigninServlet pcaSigninServlet; @Autowired private PCASignoutServlet pcaSignoutServlet; @Autowired private PCAInitServlet pcaInitServlet; @Autowired private PCALogoutServlet pcaLogoutServlet; @Autowired private PCAInfoServlet pcaInfoServlet; @Autowired private HelloServlet helloServlet; @Autowired @Qualifier("handler") private WebAppContext webapp; @PostConstruct void init(){ Server server = new Server(8848); ServletContextHandler contextHander = new ServletContextHandler(ServletContextHandler.SESSIONS); contextHander.setContextPath("/"); System.out.println("start init"); HandlerCollection hc =new HandlerCollection(); hc.setHandlers(new Handler[]{webapp, contextHander}); server.setHandler(hc); System.out.println("addServlet /hello"); contextHander.addServlet(new ServletHolder(helloServlet), "/hello"); contextHander.addServlet(new ServletHolder( pcaSigninServlet), "/pca/signin"); contextHander.addServlet(new ServletHolder( pcaSignoutServlet), "/pca/signout"); contextHander.addServlet(new ServletHolder( pcaInitServlet), "/pca/init"); contextHander.addServlet(new ServletHolder( pcaLogoutServlet), "/pca/logout"); contextHander.addServlet(new ServletHolder( pcaInfoServlet), "/pca/info"); try { System.out.println("server start"); server.start(); server.join(); System.out.println("server stop"); } catch (Exception e) { e.printStackTrace(); } } }
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看