美文网首页
Spring-1依赖注入

Spring-1依赖注入

作者: RyanHugo | 来源:发表于2020-03-12 15:53 被阅读0次

    IOC概念补充https://www.cnblogs.com/xdp-gacl/p/4249939.html

    属性注入XML配置

    <!-- class :通过反射的方式在IOC容器中创建bean,所以bean必须有无参数构造器
                id:容器中bean的唯一标识
         -->
        <!-- set依赖注入,必须有set方法 -->
        <bean id = "personbyset" class="test.Person">
            <property name="name" value="jerry"></property>
            <!-- 设为null -->
            <property name="age"><null></null></property>
            
            <!-- 内部 bean, 类似于匿名内部类对象. 不能被外部的 bean 来引用, 也没有必要设置 id 属性 -->
            <property name="address">
                <bean class="test.Address">
                    <property name="address" value="tj"></property>
                </bean>
            </property>
    </bean>
    

    构造器注入

    <!-- 构造器注入,必须有对应的参数的构造方法 -->
        <bean id = "person" class = "test.Person">
            <constructor-arg value="tom" name="name"></constructor-arg>
            <constructor-arg value="12"></constructor-arg>
            
        </bean>
    

    一些XML的特殊配置

    构造器按照参数类型注入、构造器按照位置类型注入 、特殊字符使用CDATA、引用外部bean

    <!-- 构造器按照参数类型注入 -->
        <bean id = "personbytype" class = "test.Person">
            <constructor-arg value="tom1" type="java.lang.String"></constructor-arg>
            <constructor-arg value="12" type="java.lang.String"></constructor-arg>
        </bean>
        
        
        <!-- 构造器按照位置类型注入 -->
        <bean id = "personbyindex" class = "test.Person">
            <constructor-arg  index="1">
            
            <!-- 特殊字符使用CDATA -->
                <value><![CDATA[<shangh>]]></value>
            </constructor-arg>
            <constructor-arg value="12" index="0"></constructor-arg>
            <!-- 引用bean -->
            <constructor-arg><ref bean="address"/></constructor-arg>
        </bean>
    

    集合属性

    <bean id = "address" class="test.Address">
            <property name="address" ><value>bj</value></property>
        </bean>
        
        
        <!-- 配置bean的list -->
        <bean id = "users" class="test.Users">
            <property name="addresses">
                <list>
                     <!-- 引用外部bean -->
                    <ref bean="address"/>
                    <!-- 使用内部bean -->
                    <bean class="test.Address">
                    <property name="address" value="tj2222222"></property>
                </bean>
                </list>
                
            </property>
        </bean>
    

    Person类

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Person {
    
        public String name;
        public String age;
        public Address address;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        
        public Address getAddress() {
            return address;
        }
        public void setAddress(Address address) {
            this.address = address;
        }
        public Person(String name, String age) {
            super();
            this.name = name;
            this.age = age;
        }
        
        public Person(){
            
        }
        
        
        
        
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + ", address=" + address
                    + "]";
        }
        public Person(String name, String age, Address address) {
            super();
            this.name = name;
            this.age = age;
            this.address = address;
        }
        public static void main(String[] args) {
    //      获取IOC容器对象
            ApplicationContext c = new ClassPathXmlApplicationContext("applicationContext.xml");
    //      从IOC中获取bean实例
            Person p = (Person) c.getBean("person");
    //      
            System.out.println(p);
            
            Person personbyset = (Person) c.getBean("personbyset");
            System.out.println(personbyset);
    
            
        }
    }
    

    Address类

    public class Address {
    
        public String address;
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        @Override
        public String toString() {
            return "Address [address=" + address + "]";
        }
    
        public Address() {
            
        }
    }
    

    User类

    import java.util.List;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Users {
    
        public List<Address> addresses;
    
        public List<Address> getAddresses() {
            return addresses;
        }
    
        public void setAddresses(List<Address> addresses) {
            this.addresses = addresses;
        }
    
        @Override
        public String toString() {
            return "Users [addresses=" + addresses + "]";
        }   
        public Users() {}
        public Users(List<Address> addresses) {
            super();
            this.addresses = addresses;
        }
        
        public static void main(String[] args) {
    //      获取IOC容器对象
            ApplicationContext c = new ClassPathXmlApplicationContext("applicationContext.xml");
    //      从IOC中获取bean实例
            Users u = (Users) c.getBean("users");
            System.out.println(u);
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:Spring-1依赖注入

          本文链接:https://www.haomeiwen.com/subject/eyypjhtx.html