zoukankan      html  css  js  c++  java
  • spring AOP

    AOP    面向切面编程    

    下来先说 前置和后置增强  

    1 前置增强  需要一个类 实现 

    implements MethodBeforeAdvice 以下接口 ,并且实现接口中的方法 

    public class lasraop implements MethodBeforeAdvice {
        public void before(Method method, Object[] objects, Object o) throws Throwable {
            System.out.println("bengin");
        }
    }

    2 后置增强  需要一个类 实现

    implements AfterReturningAdvice
    以下接口 ,并且实现接口中的方法  
    public class fristaop implements AfterReturningAdvice {
        public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {
    
            System.out.println("日志记录");
    
        }
    }

       使用方法  

     applicationContext 文件中 在头文件 中 插入 

    xmlns:aop="http://www.springframework.org/schema/aop" 

    接下来为具体使用
      <bean id="first" class="cn.study.aop.fristaop"></bean>
    
        <bean id="last" class="cn.study.aop.lasraop"></bean>
    一个为前置增强 一个为后置增强 的 bean  

        <aop:config>
            <aop:pointcut id="myPoint" expression="execution(* * ..serviers.*.*(..))"></aop:pointcut>
            <aop:advisor advice-ref="last" pointcut-ref="myPoint"></aop:advisor>
            <aop:advisor advice-ref="first" pointcut-ref="myPoint"></aop:advisor>
        </aop:config>

      AOP 标签 , 使用增强 需要在 aop:config 节点中加入3个节点 

     aop:pointcut  aop:advisor(一个为前,一个为后)

     aop:pointcut 为使用增强的方法 ,这里路径说的是services下的所有方法,

     aop:advisor 这个为使用增强的,advice为增强bean的id, pointcot-ref为上面使用方法的id 

     下面为展示的测试类 

    "C:Program FilesJavajdk1.8.0_91injava" -ea -Didea.launcher.port=7533 "-Didea.launcher.bin.path=D:mybajIntelliJ IDEA 2016.3.2in" -Dfile.encoding=UTF-8 -classpath "D:mybajIntelliJ IDEA 2016.3.2libidea_rt.jar;D:mybajIntelliJ IDEA 2016.3.2pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_91jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_91jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_91jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_91jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_91jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_91jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_91jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_91jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_91jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_91jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_91jrelibjce.jar;C:Program FilesJavajdk1.8.0_91jrelibjfr.jar;C:Program FilesJavajdk1.8.0_91jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_91jrelibjsse.jar;C:Program FilesJavajdk1.8.0_91jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_91jrelibplugin.jar;C:Program FilesJavajdk1.8.0_91jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_91jrelib
    t.jar;F:Mybatis1MyBatis	arget	est-classes;F:Mybatis1MyBatis	argetclasses;F:Mybatislibjavax.annotation.jar;F:Mybatislibjavax.jms.jar;F:Mybatislibjavax.persistence.jar;F:Mybatislibjavax.ejb.jar;F:Mybatislibjavax.transaction.jar;F:Mybatislibjavax.resource.jar;F:Mybatislibjavax.servlet.jar;F:Mybatislibjavax.servlet.jsp.jar;C:Users维吉的笔记本.m2
    epositoryjunitjunit4.12junit-4.12.jar;C:Users维吉的笔记本.m2
    epositoryorghamcresthamcrest-core1.3hamcrest-core-1.3.jar;C:Users维吉的笔记本.m2
    epositorymysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar;C:Users维吉的笔记本.m2
    epositoryjavaxservletjstl1.2jstl-1.2.jar;C:Users维吉的笔记本.m2
    epositoryjavaeejavaee-api5javaee-api-5.jar;C:Users维吉的笔记本.m2
    epositorycomalibabafastjson1.2.41fastjson-1.2.41.jar;C:Users维吉的笔记本.m2
    epositoryorgmybatismybatis3.4.1mybatis-3.4.1.jar;C:Users维吉的笔记本.m2
    epositoryorgslf4jslf4j-api1.7.21slf4j-api-1.7.21.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-beans4.2.0.RELEASEspring-beans-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-core4.2.0.RELEASEspring-core-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-context4.2.0.RELEASEspring-context-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-aop4.2.0.RELEASEspring-aop-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryaopallianceaopalliance1.0aopalliance-1.0.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-expression4.2.0.RELEASEspring-expression-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgaspectjaspectjweaver1.8.7aspectjweaver-1.8.7.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 tt,tweo
    三月 05, 2018 11:18:03 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2280cdac: startup date [Mon Mar 05 23:18:03 CST 2018]; root of context hierarchy
    三月 05, 2018 11:18:03 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [applicationContext02.xml]
    bengin
    输出
    日志记录
    
    Process finished with exit code 0

      这就是我前后置增强的输出 

    下面来说构造注入 

    通过构造和spring来为自己的属性赋值 

    创建一个普通类  就写 学生吧 

    名字 年龄  并且生成带参构造 

    public class Student  {
    
        private String name;
    
        private Integer age;
    
        public  void info(){
            System.out.println(this.name);
            System.out.println(this.age);
        }
    
        public Student(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Student() {
        }
    }

     配置文件中的输出 

     <bean id="stu" class="cn.study.dao.Student" scope="prototype">
    
            <constructor-arg index="0" value="x某"></constructor-arg>
    
            <constructor-arg index="1" value="18"></constructor-arg>
        </bean>

         1 对应带参构造的属性名顺序来赋值

         2 index为下标,从零开始      

         3 Value为属性值 

            测试类入下 

      public  void tweo(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext02.xml");
            Student jk=     (Student)context.getBean("stu");
            System.out.println(jk.getName());
            System.out.println(jk.getAge());
        }

     下面 发结果 

    "C:Program FilesJavajdk1.8.0_91injava" -ea -Didea.launcher.port=7535 "-Didea.launcher.bin.path=D:mybajIntelliJ IDEA 2016.3.2in" -Dfile.encoding=UTF-8 -classpath "D:mybajIntelliJ IDEA 2016.3.2libidea_rt.jar;D:mybajIntelliJ IDEA 2016.3.2pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_91jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_91jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_91jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_91jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_91jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_91jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_91jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_91jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_91jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_91jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_91jrelibjce.jar;C:Program FilesJavajdk1.8.0_91jrelibjfr.jar;C:Program FilesJavajdk1.8.0_91jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_91jrelibjsse.jar;C:Program FilesJavajdk1.8.0_91jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_91jrelibplugin.jar;C:Program FilesJavajdk1.8.0_91jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_91jrelib
    t.jar;F:Mybatis1MyBatis	arget	est-classes;F:Mybatis1MyBatis	argetclasses;F:Mybatislibjavax.annotation.jar;F:Mybatislibjavax.jms.jar;F:Mybatislibjavax.persistence.jar;F:Mybatislibjavax.ejb.jar;F:Mybatislibjavax.transaction.jar;F:Mybatislibjavax.resource.jar;F:Mybatislibjavax.servlet.jar;F:Mybatislibjavax.servlet.jsp.jar;C:Users维吉的笔记本.m2
    epositoryjunitjunit4.12junit-4.12.jar;C:Users维吉的笔记本.m2
    epositoryorghamcresthamcrest-core1.3hamcrest-core-1.3.jar;C:Users维吉的笔记本.m2
    epositorymysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar;C:Users维吉的笔记本.m2
    epositoryjavaxservletjstl1.2jstl-1.2.jar;C:Users维吉的笔记本.m2
    epositoryjavaeejavaee-api5javaee-api-5.jar;C:Users维吉的笔记本.m2
    epositorycomalibabafastjson1.2.41fastjson-1.2.41.jar;C:Users维吉的笔记本.m2
    epositoryorgmybatismybatis3.4.1mybatis-3.4.1.jar;C:Users维吉的笔记本.m2
    epositoryorgslf4jslf4j-api1.7.21slf4j-api-1.7.21.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-beans4.2.0.RELEASEspring-beans-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-core4.2.0.RELEASEspring-core-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-context4.2.0.RELEASEspring-context-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-aop4.2.0.RELEASEspring-aop-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryaopallianceaopalliance1.0aopalliance-1.0.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-expression4.2.0.RELEASEspring-expression-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgaspectjaspectjweaver1.8.7aspectjweaver-1.8.7.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 tt,tweo
    三月 05, 2018 11:27:18 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2280cdac: startup date [Mon Mar 05 23:27:18 CST 2018]; root of context hierarchy
    三月 05, 2018 11:27:18 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [applicationContext02.xml]
    x某
    18
    
    Process finished with exit code 0

     输出 在 配置文件中输出的值 ,这就是构造注入 

       下面来说 p命名空间注入

       还是拿上面的学生类来说 

       用p标签来注入 

       首先 ,在头文件中加一个 

    xmlns:p="http://www.springframework.org/schema/p"

         之后便能使用了,

      写法如下 

     <bean id="su" class="cn.study.dao.Student" p:name="xx" p:age="18"></bean>

       之后是测试类 

        public  void tweo(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext02.xml");
    
    
    
           Student jk=     (Student)context.getBean("su");
    
            System.out.println(jk.getName());
            System.out.println(jk.getAge());
        }

       控制台 

    "C:Program FilesJavajdk1.8.0_91injava" -ea -Didea.launcher.port=7536 "-Didea.launcher.bin.path=D:mybajIntelliJ IDEA 2016.3.2in" -Dfile.encoding=UTF-8 -classpath "D:mybajIntelliJ IDEA 2016.3.2libidea_rt.jar;D:mybajIntelliJ IDEA 2016.3.2pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_91jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_91jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_91jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_91jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_91jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_91jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_91jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_91jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_91jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_91jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_91jrelibjce.jar;C:Program FilesJavajdk1.8.0_91jrelibjfr.jar;C:Program FilesJavajdk1.8.0_91jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_91jrelibjsse.jar;C:Program FilesJavajdk1.8.0_91jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_91jrelibplugin.jar;C:Program FilesJavajdk1.8.0_91jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_91jrelib
    t.jar;F:Mybatis1MyBatis	arget	est-classes;F:Mybatis1MyBatis	argetclasses;F:Mybatislibjavax.annotation.jar;F:Mybatislibjavax.jms.jar;F:Mybatislibjavax.persistence.jar;F:Mybatislibjavax.ejb.jar;F:Mybatislibjavax.transaction.jar;F:Mybatislibjavax.resource.jar;F:Mybatislibjavax.servlet.jar;F:Mybatislibjavax.servlet.jsp.jar;C:Users维吉的笔记本.m2
    epositoryjunitjunit4.12junit-4.12.jar;C:Users维吉的笔记本.m2
    epositoryorghamcresthamcrest-core1.3hamcrest-core-1.3.jar;C:Users维吉的笔记本.m2
    epositorymysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar;C:Users维吉的笔记本.m2
    epositoryjavaxservletjstl1.2jstl-1.2.jar;C:Users维吉的笔记本.m2
    epositoryjavaeejavaee-api5javaee-api-5.jar;C:Users维吉的笔记本.m2
    epositorycomalibabafastjson1.2.41fastjson-1.2.41.jar;C:Users维吉的笔记本.m2
    epositoryorgmybatismybatis3.4.1mybatis-3.4.1.jar;C:Users维吉的笔记本.m2
    epositoryorgslf4jslf4j-api1.7.21slf4j-api-1.7.21.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-beans4.2.0.RELEASEspring-beans-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-core4.2.0.RELEASEspring-core-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-context4.2.0.RELEASEspring-context-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-aop4.2.0.RELEASEspring-aop-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryaopallianceaopalliance1.0aopalliance-1.0.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-expression4.2.0.RELEASEspring-expression-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgaspectjaspectjweaver1.8.7aspectjweaver-1.8.7.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 tt,tweo
    三月 05, 2018 11:34:06 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2280cdac: startup date [Mon Mar 05 23:34:06 CST 2018]; root of context hierarchy
    三月 05, 2018 11:34:06 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [applicationContext02.xml]
    xx
    18
    
    Process finished with exit code 0

       输出的值与在bean里的赋值一样

       下面来说 集合属性的注入 

       还是先看 类 

        测试全为String类型  数组 List set Map  Properties

    package cn.study.entity;
    
    
    
    import java.util.*;
    
    /**
     * Created by 维吉的笔记本 on 2018/3/5.
     */
    public class Collcation {
    
        private  String[]  array;
    
        private List<String> list;
    
        private Set<String> set;
    
        private Map<String,String> map;
    
        private Properties properties;
    
        @Override
        public java.lang.String toString() {
            return "Collcation{" +
                    "array=" + Arrays.toString(array) +
                    ", list=" + list +
                    ", set=" + set +
                    ", map=" + map +
                    ", properties=" + properties +
                    '}';
        }
    
        public String[] getArray() {
            return array;
        }
    
        public void setArray(String[] array) {
            this.array = array;
        }
    
        public List<String> getList() {
            return list;
        }
    
        public void setList(List<String> list) {
            this.list = list;
        }
    
        public Set<String> getSet() {
            return set;
        }
    
        public void setSet(Set<String> set) {
            this.set = set;
        }
    
        public Map<String, String> getMap() {
            return map;
        }
    
        public void setMap(Map<String, String> map) {
            this.map = map;
        }
    
        public Properties getProperties() {
            return properties;
        }
    
        public void setProperties(Properties properties) {
            this.properties = properties;
        }
    }

    下面来说 具体的使用方法 

     

     <bean id="ms" class="cn.study.entity.Collcation">
    
            <property name="array">
    
                <array>
                    <value>哈哈1</value>
                    <value>哈哈2</value>
                    <value>哈哈3</value>
    
                </array>
    
            </property>
            <property name="list">
                <list>
    
                    <value>A先生</value>
                    <value>B先生</value>
                    <value>c先生</value>
                </list>
    
            </property>
    
            <property name="set">
                <set>
                    <value>老板</value>
                    <value>总裁</value>
                    <value>董事长</value>
    
                </set>
    
            </property>
    
            <property name="map">
                <map>
                    <entry key="a111">
                        <value>风景</value>
                    </entry>
                    <entry key="a222">
                        <value>山河</value>
                    </entry>
                    <entry key="a333">
                        <value>江河</value>
                    </entry>
                </map>
            </property>
    
    
    
            <property name="properties">
                <props>
                    <prop key="a1">11</prop>
                    <prop key="a2">22</prop>
                    <prop key="a3">33</prop>
                </props>
    
            </property>
        </bean>

         以上为赋值过程 , 下面就直接输出吧 , 这里赋值好像没有什么问题  

        接下来就是测试类了 

      public  void ffo(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext02.xml");
            Collcation c=    (Collcation)context.getBean("ms");
    
            System.out.println(c);
    
    
        }
    "C:Program FilesJavajdk1.8.0_91injava" -ea -Didea.launcher.port=7538 "-Didea.launcher.bin.path=D:mybajIntelliJ IDEA 2016.3.2in" -Dfile.encoding=UTF-8 -classpath "D:mybajIntelliJ IDEA 2016.3.2libidea_rt.jar;D:mybajIntelliJ IDEA 2016.3.2pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_91jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_91jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_91jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_91jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_91jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_91jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_91jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_91jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_91jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_91jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_91jrelibjce.jar;C:Program FilesJavajdk1.8.0_91jrelibjfr.jar;C:Program FilesJavajdk1.8.0_91jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_91jrelibjsse.jar;C:Program FilesJavajdk1.8.0_91jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_91jrelibplugin.jar;C:Program FilesJavajdk1.8.0_91jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_91jrelib
    t.jar;F:Mybatis1MyBatis	arget	est-classes;F:Mybatis1MyBatis	argetclasses;F:Mybatislibjavax.annotation.jar;F:Mybatislibjavax.jms.jar;F:Mybatislibjavax.persistence.jar;F:Mybatislibjavax.ejb.jar;F:Mybatislibjavax.transaction.jar;F:Mybatislibjavax.resource.jar;F:Mybatislibjavax.servlet.jar;F:Mybatislibjavax.servlet.jsp.jar;C:Users维吉的笔记本.m2
    epositoryjunitjunit4.12junit-4.12.jar;C:Users维吉的笔记本.m2
    epositoryorghamcresthamcrest-core1.3hamcrest-core-1.3.jar;C:Users维吉的笔记本.m2
    epositorymysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar;C:Users维吉的笔记本.m2
    epositoryjavaxservletjstl1.2jstl-1.2.jar;C:Users维吉的笔记本.m2
    epositoryjavaeejavaee-api5javaee-api-5.jar;C:Users维吉的笔记本.m2
    epositorycomalibabafastjson1.2.41fastjson-1.2.41.jar;C:Users维吉的笔记本.m2
    epositoryorgmybatismybatis3.4.1mybatis-3.4.1.jar;C:Users维吉的笔记本.m2
    epositoryorgslf4jslf4j-api1.7.21slf4j-api-1.7.21.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-beans4.2.0.RELEASEspring-beans-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-core4.2.0.RELEASEspring-core-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-context4.2.0.RELEASEspring-context-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-aop4.2.0.RELEASEspring-aop-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryaopallianceaopalliance1.0aopalliance-1.0.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-expression4.2.0.RELEASEspring-expression-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgaspectjaspectjweaver1.8.7aspectjweaver-1.8.7.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 tt,ffo
    三月 05, 2018 11:45:34 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2280cdac: startup date [Mon Mar 05 23:45:34 CST 2018]; root of context hierarchy
    三月 05, 2018 11:45:34 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [applicationContext02.xml]
    Collcation{array=[哈哈1, 哈哈2, 哈哈3], list=[A先生, B先生, C先生], set=[老板, 总裁, 董事长], map={a111=风景, a222=山河, a333=江河}, properties={a2=22, a1=11, a3=33}}
    
    Process finished with exit code 0

       以下为输出  会把我们在 bean里所赋的值给输出 

        

    下面介绍 

    单例:Singleton
    多例:prototype

    我们都知道,我们在使用配置的时候,都会new一下bean里,会实例化,上一篇博客已经说过了 

     使用方法 在 是  bean 里的 属性 加一个 scope,

    scope 的值为上面的单例和双例  

    单例就是 用两遍相同的bean ,他只会实例化一次
        <bean id="stu" class="cn.study.dao.Student" scope="singleton">
    
            <constructor-arg index="0" value="x某"></constructor-arg>
    
            <constructor-arg index="1" value="18"></constructor-arg>
        </bean>

      

      public  void tweo(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext02.xml");
    
    //        Helloseviec hh=  (Helloseviec)context.getBean("service");
    //
    //        hh.some();
    
           Student jk=     (Student)context.getBean("stu");
            Student j=     (Student)context.getBean("stu");
            System.out.println(jk);
            System.out.println(j);
            System.out.println(j.getName());
            System.out.println(j.getAge());
            System.out.println(jk.getName());
            System.out.println(jk.getAge());
        }
    "C:Program FilesJavajdk1.8.0_91injava" -ea -Didea.launcher.port=7534 "-Didea.launcher.bin.path=D:mybajIntelliJ IDEA 2016.3.2in" -Dfile.encoding=UTF-8 -classpath "D:mybajIntelliJ IDEA 2016.3.2libidea_rt.jar;D:mybajIntelliJ IDEA 2016.3.2pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_91jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_91jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_91jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_91jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_91jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_91jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_91jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_91jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_91jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_91jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_91jrelibjce.jar;C:Program FilesJavajdk1.8.0_91jrelibjfr.jar;C:Program FilesJavajdk1.8.0_91jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_91jrelibjsse.jar;C:Program FilesJavajdk1.8.0_91jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_91jrelibplugin.jar;C:Program FilesJavajdk1.8.0_91jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_91jrelib
    t.jar;F:Mybatis1MyBatis	arget	est-classes;F:Mybatis1MyBatis	argetclasses;F:Mybatislibjavax.annotation.jar;F:Mybatislibjavax.jms.jar;F:Mybatislibjavax.persistence.jar;F:Mybatislibjavax.ejb.jar;F:Mybatislibjavax.transaction.jar;F:Mybatislibjavax.resource.jar;F:Mybatislibjavax.servlet.jar;F:Mybatislibjavax.servlet.jsp.jar;C:Users维吉的笔记本.m2
    epositoryjunitjunit4.12junit-4.12.jar;C:Users维吉的笔记本.m2
    epositoryorghamcresthamcrest-core1.3hamcrest-core-1.3.jar;C:Users维吉的笔记本.m2
    epositorymysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar;C:Users维吉的笔记本.m2
    epositoryjavaxservletjstl1.2jstl-1.2.jar;C:Users维吉的笔记本.m2
    epositoryjavaeejavaee-api5javaee-api-5.jar;C:Users维吉的笔记本.m2
    epositorycomalibabafastjson1.2.41fastjson-1.2.41.jar;C:Users维吉的笔记本.m2
    epositoryorgmybatismybatis3.4.1mybatis-3.4.1.jar;C:Users维吉的笔记本.m2
    epositoryorgslf4jslf4j-api1.7.21slf4j-api-1.7.21.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-beans4.2.0.RELEASEspring-beans-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-core4.2.0.RELEASEspring-core-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-context4.2.0.RELEASEspring-context-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-aop4.2.0.RELEASEspring-aop-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryaopallianceaopalliance1.0aopalliance-1.0.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-expression4.2.0.RELEASEspring-expression-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgaspectjaspectjweaver1.8.7aspectjweaver-1.8.7.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 tt,tweo
    三月 05, 2018 11:56:50 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2280cdac: startup date [Mon Mar 05 23:56:50 CST 2018]; root of context hierarchy
    三月 05, 2018 11:56:50 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [applicationContext02.xml]
    cn.study.dao.Student@4d9e68d0
    cn.study.dao.Student@4d9e68d0
    x某
    18
    x某
    18
    
    Process finished with exit code 0

    两个相同的地址 ,改变scope ,为双例 

     <bean id="stu" class="cn.study.dao.Student" scope="prototype">
    
            <constructor-arg index="0" value="x某"></constructor-arg>
    
            <constructor-arg index="1" value="18"></constructor-arg>
        </bean>
    "C:Program FilesJavajdk1.8.0_91injava" -ea -Didea.launcher.port=7535 "-Didea.launcher.bin.path=D:mybajIntelliJ IDEA 2016.3.2in" -Dfile.encoding=UTF-8 -classpath "D:mybajIntelliJ IDEA 2016.3.2libidea_rt.jar;D:mybajIntelliJ IDEA 2016.3.2pluginsjunitlibjunit-rt.jar;C:Program FilesJavajdk1.8.0_91jrelibcharsets.jar;C:Program FilesJavajdk1.8.0_91jrelibdeploy.jar;C:Program FilesJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;C:Program FilesJavajdk1.8.0_91jrelibextcldrdata.jar;C:Program FilesJavajdk1.8.0_91jrelibextdnsns.jar;C:Program FilesJavajdk1.8.0_91jrelibextjaccess.jar;C:Program FilesJavajdk1.8.0_91jrelibextjfxrt.jar;C:Program FilesJavajdk1.8.0_91jrelibextlocaledata.jar;C:Program FilesJavajdk1.8.0_91jrelibext
    ashorn.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunec.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunjce_provider.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunmscapi.jar;C:Program FilesJavajdk1.8.0_91jrelibextsunpkcs11.jar;C:Program FilesJavajdk1.8.0_91jrelibextzipfs.jar;C:Program FilesJavajdk1.8.0_91jrelibjavaws.jar;C:Program FilesJavajdk1.8.0_91jrelibjce.jar;C:Program FilesJavajdk1.8.0_91jrelibjfr.jar;C:Program FilesJavajdk1.8.0_91jrelibjfxswt.jar;C:Program FilesJavajdk1.8.0_91jrelibjsse.jar;C:Program FilesJavajdk1.8.0_91jrelibmanagement-agent.jar;C:Program FilesJavajdk1.8.0_91jrelibplugin.jar;C:Program FilesJavajdk1.8.0_91jrelib
    esources.jar;C:Program FilesJavajdk1.8.0_91jrelib
    t.jar;F:Mybatis1MyBatis	arget	est-classes;F:Mybatis1MyBatis	argetclasses;F:Mybatislibjavax.annotation.jar;F:Mybatislibjavax.jms.jar;F:Mybatislibjavax.persistence.jar;F:Mybatislibjavax.ejb.jar;F:Mybatislibjavax.transaction.jar;F:Mybatislibjavax.resource.jar;F:Mybatislibjavax.servlet.jar;F:Mybatislibjavax.servlet.jsp.jar;C:Users维吉的笔记本.m2
    epositoryjunitjunit4.12junit-4.12.jar;C:Users维吉的笔记本.m2
    epositoryorghamcresthamcrest-core1.3hamcrest-core-1.3.jar;C:Users维吉的笔记本.m2
    epositorymysqlmysql-connector-java5.1.25mysql-connector-java-5.1.25.jar;C:Users维吉的笔记本.m2
    epositoryjavaxservletjstl1.2jstl-1.2.jar;C:Users维吉的笔记本.m2
    epositoryjavaeejavaee-api5javaee-api-5.jar;C:Users维吉的笔记本.m2
    epositorycomalibabafastjson1.2.41fastjson-1.2.41.jar;C:Users维吉的笔记本.m2
    epositoryorgmybatismybatis3.4.1mybatis-3.4.1.jar;C:Users维吉的笔记本.m2
    epositoryorgslf4jslf4j-api1.7.21slf4j-api-1.7.21.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-core1.2.3logback-core-1.2.3.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-beans4.2.0.RELEASEspring-beans-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-core4.2.0.RELEASEspring-core-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositorycommons-loggingcommons-logging1.2commons-logging-1.2.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-context4.2.0.RELEASEspring-context-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-aop4.2.0.RELEASEspring-aop-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryaopallianceaopalliance1.0aopalliance-1.0.jar;C:Users维吉的笔记本.m2
    epositoryorgspringframeworkspring-expression4.2.0.RELEASEspring-expression-4.2.0.RELEASE.jar;C:Users维吉的笔记本.m2
    epositoryorgaspectjaspectjweaver1.8.7aspectjweaver-1.8.7.jar;C:Users维吉的笔记本.m2
    epositorychqoslogbacklogback-classic1.2.3logback-classic-1.2.3.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 tt,tweo
    三月 05, 2018 11:59:26 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2280cdac: startup date [Mon Mar 05 23:59:26 CST 2018]; root of context hierarchy
    三月 05, 2018 11:59:26 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [applicationContext02.xml]
    cn.study.dao.Student@14dd9eb7
    cn.study.dao.Student@52e6fdee
    x某
    18
    x某
    18

     两块不同的地址 , 这就是单例和双例了

     

  • 相关阅读:
    【H5】01 入门 & 概述
    【Mybatis + Spring】 Mybatis
    【Mybatis】Bonus01 笔记资料
    【Spring】06 Aop切面功能
    【Spring】05 注解开发
    【Spring】04 注解实现自动装配
    【Spring】03 XML配置
    【Spring】02 过程分析
    【Mybatis】11 注解的使用
    【Mybatis】10 实现分页 & 分页插件
  • 原文地址:https://www.cnblogs.com/LWLDD/p/8512094.html
Copyright © 2011-2022 走看看