• Spring的两种属性注入方式


    Spring包下载地址:http://repo.spring.io/release/org/springframework/spring/

    jar包下载:http://www.manyjar.com/showJar/m.html

    1.set方式注入

    配置文件:

    <?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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
    <!-- 使用set方法注入属性
        singleton 单实例 默认
        prototype 多实例

    -->
    <bean id="user" class="com.spring.demo1.User" scope="singleton">
    <!-- 注入属性值
    name的属性值就是类里面定义的属性名称
    value设置具体值
    -->
    <property name="bookname" value="程序设计"></property>
    </bean>
    </beans>

    测试代码:

    package com.spring.demo1;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class TestIOC {
        public static void main(String[] args) {

            //1.加载spring配置文件,根据配置创建对象
            ApplicationContext context = (ApplicationContext) new ClassPathXmlApplicationContext("config.xml");
            //2.得到配置创建的对象
            User user=(User) context.getBean("user");//强转,引号内为配置文件中的id名
            User user1=(User) context.getBean("user");
            System.out.println(user);//单实例输出地址
            System.out.println(user1);//多实例输出地址不一样
            user.add();//方法调用
        }
    }

    package com.spring.demo1;
    
    public class User {
        private String bookname;
            //只需要构造一个set方法
            public void setBookname(String bookname) {
            this.bookname = bookname;
        }
    
            public void add(){
                System.out.println("bookname......"+bookname);
            }
                
    }

    测试结果:

    2.有参构造注入

    配置文件:

    <?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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
        
    <bean id="HelloWorld" class="com.gc.action.HelloWorld">
    
    <!-- 有参构造注入 -->
    <constructor-arg index="0">
            <value>HelloWorld1</value>
    </constructor-arg>
    </bean>
    </beans>

    测试代码:

    package com.gc.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.gc.action.HelloWorld;
    
    public class TestHelloWorld {
            public static void main(String[] args) {
                ApplicationContext actx=(ApplicationContext) new ClassPathXmlApplicationContext("applicationContext.xml");
                HelloWorld helloworld=(HelloWorld) actx.getBean("HelloWorld");
                System.out.println(helloworld.getMsg());
            }
    }
    package com.gc.action;
    
    public class HelloWorld {
            public String msg=null;
            
            
                //添加构造方法实现构造注入
            public HelloWorld(String msg) {
                super();
                this.msg = msg;
            }
    
            public String getMsg() {
                return msg;
            }
    
            public void setMsg(String msg) {
                this.msg = msg;
            }
            
    }

    结果:

     新看了一个P名称空间注入:

    config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 引入p名称空间  ,最后以p结尾-->
    <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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
    <!-- p名称空间注入 -->
    <bean id="person" class="com.spring.property.Person" p:name="lucy"></bean>
    </beans>

    Person.java

    package com.spring.property;
    
    public class Person {
            private String name;
    
            public void setName(String name) {
                this.name = name;
            }
            public void test1(){
                System.out.println("person"+name);
            }
    }

    Testp.java

    package com.spring.property;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Testp {
            public static void main(String[] args) {
                ApplicationContext context=new ClassPathXmlApplicationContext("config.xml");
                Person person=(Person) context.getBean("person");
                person.test1();
            }
    }

    测试结果:

  • 相关阅读:
    N4-某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
    N3-按链表值从尾到头的顺序返回一个ArrayList。
    N2-替换字符串空格
    innodb死锁1213
    innodb是行锁还是表锁
    docker是什么,docker干什么用
    innodb通过frm ibd还原数据,线上项目验证过
    机器性能预警系统(cpu,process,内存,硬盘监控)并钉钉机器人报警
    mysql++ query.more_results()为true时,query.store_next()就崩掉了
    yum install nload失败,提示No package nload available.Error: Nothing to do
  • 原文地址:https://www.cnblogs.com/liurg/p/7942374.html
Copyright © 2020-2023  润新知