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

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

 

原文地址:https://www.cnblogs.com/LWLDD/p/8512094.html