• p命名空间的使用(不推荐用)


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

    p:没有xsd文件,直接加上面那句就好了

         <!-- singleton和prototype -->
         <bean id="user" class="com.bdqn.entity.User" scope="prototype">
             <property name="username" value="admin"></property>
             <property name="password" value="123"></property>
         </bean>
         <!-- p -->
         <bean id="user_p" class="com.bdqn.entity.User" 
          p:username="admin" p:password="123"></bean>
    public class testScope {
    
        @Test
        public void test() {
            //默任singleton
            ApplicationContext ctx= new ClassPathXmlApplicationContext(
                    "applicationContext.xml");
            
            //客户端1拿到的东西
            User user = ctx.getBean("user_p",User.class);
            System.out.println(user.getUsername());//admin
            user.setUsername(user.getUsername()+"1");
            
            //客户端2拿到的东西(对唯一实例的修改)
            User user2 = ctx.getBean("user_p",User.class);
            System.out.println(user2.getUsername());//admin1
            user2.setUsername(user.getUsername()+"2");
            
            //客户端3拿到的东西(对唯一实例的修改)
            User user3 = ctx.getBean("user_p",User.class);
            System.out.println(user3.getUsername());//admin12
        
            System.out.println(user==user2);//true
            System.out.println(user==user3);//true
        
        }
    
    }

    自动装配

    1 <!-- 自动装配 -->
        <bean id="userDao" class="com.bdqn.dao.UserDaoImpl"></bean>
          <bean id="userService" class="com.bdqn.service.UserService">     2 <bean id="dao" class="com.bdqn.dao.UserDaoImpl"></bean> 3 <bean id="userService2" class="com.bdqn.service.UserService" 4 autowire="byName"> 5 6 </bean>

    test类

     1 public class TestAutowire {
     2 
     3     @Test
     4     public void test() {
     5         ApplicationContext ctx= new ClassPathXmlApplicationContext(
     6                 "applicationContext.xml");
     7         UserService service =(UserService)ctx.getBean("userService2");
     8         service.save();
     9     }
    10 
    11 }
    当 autowire="no"时,
      默认值,spring默认不进行自动装配,必须显示指定依赖对象
    当 autowire="byName"时,输出保存----找属性
      根据属性名自动装配,spring自动查找与属性名相同的id
      如果找到,则自动注入,否则什么都不做
    当 autowire="byType"时,就得删了2个中class相同的一个bean。没有删除就会提示出,找到2个----找属性
      根据属性的类型自动装配,spring自动查找与属性类型相同的bean,如果刚好找到唯一的那个,则自动注入
      如果找到多个与属性类型相同的Bean,则跑出异常,如果没找到,就什么也不做
    当 autowire="constructor"时,---直接找构造方法
      和byType类似,不过它针对构造方法,如果spring找到一个Bean和构造方法的参数类型相匹配,则通过构造注入
    该依赖对象,如果找不到,就抛出异常
     1 <!-- 自动装配,里面的装配都不需要写
     2         注意必须满足2点:1、UserServiceImpl.java里的属性名必须和applicationContext.xml里对应的bean id的名字相同
     3         2、 在声明里配置一个属性autowire="byName"(通过名字自动装配)也就是说:cn.bdqn.biz.service.impl.UserServiceImpl的属性名与bean的id名称相同就会自动装配-->
     4     <!--
     5     <bean id="userServiceImpl" class="cn.bdqn.biz.service.impl.UserServiceImpl" autowire="byName"/>
     6     <bean id="userDao" class="cn.bdqn.biz.dao.impl.UserDaoImpl"/>
     7     -->
     8     
     9     <!-- autowire="byType" 自动装配类型,根据类型自动装配,类型不能相同
    10         也就是说:cn.bdqn.biz.service.impl.UserServiceImpl的属性类型与bean中有相同的类型的时候就会自动装配
    11         注:不可以有相同的类型,也就是说不可以有相同的类名存在,ID可有可无,但是一般情况下是存在的,它与其他没有关联-->
    12     <!-- 
    13     <bean id="userServiceImpl" class="cn.bdqn.biz.service.impl.UserServiceImpl" autowire="byType"/>
    14     <bean id="userDaoImpl" class="cn.bdqn.biz.dao.impl.UserDaoImpl"/>
    15      -->
    16     
    17     <!-- autowire="constructor" 根据类型自动装配,根据构造器的参数显示
    18         也就是说:cn.bdqn.biz.service.impl.UserServiceImpl的属性类型与bean中有相同的类型的时候就会自动装配
    19         注:执行这个xml的时候,要有构造函数(有参)若容器中没找到与构造器参数类型一致的bean,则抛出异常-->
  • 相关阅读:
    Pycharm 新建工程后修改解析器为python3 的方法
    HttpRunner2.X开源接口测试框架学习(七):跳过用例以及重复执行用例
    python习题(一)
    HttpRunner2.X开源接口测试框架学习(九):用例分层机制实战应用
    C# 中的常用正则表达式总结
    缩小SQL Server数据库日志文件
    DataBinder.Eval用法范例
    关于GridView中自定义分页、单选、多选、排序、自增列的简单应用
    退出一个页面时自动清空session变量
    C#代码与javaScript函数的相互调用
  • 原文地址:https://www.cnblogs.com/xuerong/p/4915879.html
Copyright © 2020-2023  润新知