Spring(一)

29369 ワード

回顧する
Strutsとヒップホップは何ができますか?
Struts
    Mvc         
                、    、    、  …
Hibernate
            ; 
        ,
                 , 
                   。
従来の開発モデル
  mvc        ;
  mvc       :
    Entity / dao / service / action

    // 1.    
    class User{
    }


    //2. dao
    class  UserDao{
       ..   db
    }

    //3. service
    class  UserService{
        UserDao userDao = new UserDao();
    }

    //4. action
    class  UserAction{
        UserService userService = new UserService();

        ..
               
    }

        :
    /user.action ---->  Tomcat  (     Action、Service、dao

      :
        1.           ?
        2.       
                
                action       【      】
                service      【         】
                dao          【         】
                
                action          
                service         
                dao             
        3.        
            action    service
            service   dao

    =======================================================
      :
        spring          !
        ,          、         !
Springフレーム
専門用語の理解
コンポーネント/フレーム設計
     
             ,           ;             。
          : Struts  
      
         ,           。
      :Hibernate   / Spring  
コントロール反転
Inversion on Control ,      IOC
             ,        .

    ,  dependency injection 
             

  :
         ,           【        】
         ,
               ,                【  set      】
AOP
          。  ,             ,           。
        :  、  、  ;
概要
Spring  ,                       。
                  ;Spring Struts,  Spring hibernate
     (    (  )       )
Spring          :
    1) Spring Core  spring     : IOC  ,            
    2) Spring Web  Spring web     。
                        -    struts  , struts action    spring
                        - spring mvc  
    3) Spring DAO  Spring  jdbc       【JdbcTemplate     】
    4) Spring ORM  spring orm   : 
                             hibernate  ,【session】
                              spring  hibernate     
    5)Spring AOP      
    6)SpringEE   spring  javaEE       
開発ステップ
    spring     :
         3.0     ,   spring       【spring   +    】 2.5  ;
         3.0     ,     spring      【     】
            (       ,      !)


    1)   , jar  :spring-framework-3.2.5.RELEASE
        commons-logging-1.1.3.jar               
        spring-beans-3.2.5.RELEASE.jar        bean  
        spring-context-3.2.5.RELEASE.jar      spring     
        spring-core-3.2.5.RELEASE.jar         spring    
        spring-expression-3.2.5.RELEASE.jar   spring      

            5 jar  ,           !

    2)       : applicationContext.xml  
        Spring    :applicationContext.xml / bean.xml

            :
    spring-framework-3.2.5.RELEASE\docs\spring-framework-reference\htmlsingle\index.html
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

</beans>  
    3) Api
public class App {

    // 1.        IOC       
    @Test
    public void testIOC() throws Exception {
        //     
        // User user = new User();

        //   ,        spring IOC  
        Resource resource = new ClassPathResource("cn/itcast/a_hello/applicationContext.xml");
        //       (Bean   ), IOC   =     + applicationContext.xml
        BeanFactory factory = new XmlBeanFactory(resource);
        //          
        User user = (User) factory.getBean("user");

        System.out.println(user.getId());

    }

    //2. (  )    IOC     
    @Test
    public void testAc() throws Exception {
        //   IOC    
        ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/a_hello/applicationContext.xml");
        //       bean
        User user = (User) ac.getBean("user");

        System.out.println(user);
    }
}
オブジェクト作成の詳細
/** * 1)     :   /   * scope="singleton",    ,         【service/dao/   】 * scope="prototype",   ; 【Action  】 * * 2)       ? * scope="prototype"         ,     。 * scope="singleton"    (       ),       bean,         。 * 3)        * lazy-init="false"    false,      ,            * lazy-init="true"      ,               * (      ) * 4)       ,   /   * init-method="init_user" 【     init_user  ,           】 * destroy-method="destroy_user" 【        destriy      ,(      )】 */
    @Test
    public void testIOC() throws Exception {
        //   IOC     【    ,          】
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/a_hello/applicationContext.xml");
        System.out.println("-----    -----");

        //       bean
        User user1 = (User) ac.getBean("user");
        User user2 = (User) ac.getBean("user");

        System.out.println(user1);
        System.out.println(user2);

        //        
        ac.destroy();
    }
SpringIOC容器
オブジェクトを作成
SpringIOC  , spring    。
  :      &          

IOC      :
    ,      :
1)         
2)       
3)       
           ,        
           ,         
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- ###############    ############### -->

    <!-- 1.          <bean id="user1" class="cn.itcast.b_create_obj.User"></bean> -->

    <!-- 2.        -->
    <bean id="user2" class="cn.itcast.b_create_obj.User">
        <constructor-arg index="0" type="int" value="100"></constructor-arg>
        <constructor-arg index="1" type="java.lang.String" value="Jack"></constructor-arg>
    </bean>

    <!--        ,  "Jack" ; String s = new String("jack")-->
    <bean id="str" class="java.lang.String">
        <constructor-arg value="Jacks"></constructor-arg>
    </bean>
    <bean id="user3" class="cn.itcast.b_create_obj.User">
        <constructor-arg index="0" type="int" value="100"></constructor-arg>
        <constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg>
    </bean>


    <!-- 3.         -->
    <!-- # 3.1    ,     -->
    <!--       -->
    <bean id="factory" class="cn.itcast.b_create_obj.ObjectFactory"></bean>
    <!--    user  , factory       -->
    <bean id="user4" factory-bean="factory" factory-method="getInstance"></bean>


    <!-- # 3.2    :      -->
    <!-- class           factory-method         “    ” -->
    <bean id="user" class="cn.itcast.b_create_obj.ObjectFactory" factory-method="getStaticInstance"></bean>

</beans>      
オブジェクト依存関係
Spring ,          ?  【DI,     】
    1)       
    2)   set        
    3) p    
    4)     (  )
    5)   
(一般的に)Setメソッド注入値
<!-- dao instance -->
    <bean id="userDao" class="cn.itcast.c_property.UserDao"></bean>

    <!-- service instance -->
    <bean id="userService" class="cn.itcast.c_property.UserService">
        <property name="userDao" ref="userDao"></property>
    </bean>

    <!-- action instance -->
    <bean id="userAction" class="cn.itcast.c_property.UserAction">
        <property name="userService" ref="userService"></property>
    </bean>
内部ベーン
<!-- ##############  bean############## -->
    <bean id="userAction" class="cn.itcast.c_property.UserAction">
        <property name="userService">
            <bean class="cn.itcast.c_property.UserService">
                <property name="userDao">
                    <bean class="cn.itcast.c_property.UserDao"></bean>
                </property>
            </bean>
        </property>
    </bean>
p名前空間注入属性値(最適化)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- ###############      ############### -->

    <!--         : # p               (spring3.0       ) -->
     <bean id="userDao" class="cn.itcast.c_property.UserDao"></bean>

     <bean id="userService" class="cn.itcast.c_property.UserService" p:userDao-ref="userDao"></bean>

     <bean id="userAction" class="cn.itcast.c_property.UserAction" p:userService-ref="userService"></bean>


    <!--      : <bean id="user" class="cn.itcast.c_property.User" > <property name="name" value="xxx"></property> </bean> -->
    <!-- p        -->
    <bean id="user" class="cn.itcast.c_property.User" p:name="Jack0001"></bean>

</beans>   
自動組立(了解)
1.         :autowire="byName"
       IOC                ,     
<!-- ###############    ############### -->  
    <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean> 
    <bean id="userService" class="cn.itcast.d_auto.UserService" autowire="byName"></bean>
    <!--   “  ”    : userAction     ,  ioc                -->
    <bean id="userAction" class="cn.itcast.d_auto.UserAction" autowire="byName"></bean>
            ,        bean     autowire=”byName”
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byName">           (  )

    <!-- ###############    ############### -->  
    <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean> 
    <bean id="userService" class="cn.itcast.d_auto.UserService"></bean>
    <bean id="userAction" class="cn.itcast.d_auto.UserAction"></bean>
</beans>   
2.         :autowire="byType"
            IOC         ;    。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byType">

    <!-- ###############    ############### -->  
    <bean id="userDao" class="cn.itcast.d_auto.UserDao"></bean> 
    <bean id="userService" class="cn.itcast.d_auto.UserService"></bean>

    <!--           :     IOC              -->
    <bean id="userAction" class="cn.itcast.d_auto.UserAction"></bean>


    <!--   :                ,             <bean id="userService_test" class="cn.itcast.d_auto.UserService" autowire="byType"></bean> -->
</beans>  
  :
    Spring                ;           。
    (       )
注釈
        spring IOC     !

      :
    1)   context    
        xmlns:context="http://www.springframework.org/schema/context"
    2)      
        <context:component-scan base-package="cn.itcast.e_anno2"></context:component-scan>
    3)    
               ,     ioc  。

                     ,     :
        @Component            IOC  

@Repository      @Component;       
@Service         @Component;         
@Controller       @Component;        

@Resource         

  :
    1)     ,      ,        IOC  ,       (DI)
    2)      XML      。
SpringとStrutsのフレームワークを統合
Spring,        
Struts,  Action    

Spring Struts    ,
       : struts  action     ,  spring  !

Spring Hibernate  :

【SSH  :
        Spring Struts
               : action  spring  !
        Spring Hibernate
               : sessionFactory    spring  !
】

  :
      jar  
        1)  struts .jar    
        2)spring-core    jar  
        3)spring-web   jar 
            spring-web-3.2.5.RELEASE.jar            【Spring  】
            struts2-spring-plugin-2.3.4.1.jar       【Struts  】

      :
        4)  XML
            struts.xml      【struts   action    】
            bean.xml        【spring ioc    】
            web.xml         【     :   struts  】
                            【   spring ioc  】