码迷,mamicode.com
首页 > 编程语言 > 详细

SpringDI--依赖注入(配置文件方式)

时间:2019-10-04 22:34:29      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:sch   ica   配置文件   配置   方法   name   print   dex   frame   

 

 

方式一:Set注入

UserDao:

技术图片
package com.spring.demo02;

public class UserDao {
    public void save() {
        System.out.println("持久层。。。");
    }
}
View Code

UserService:

技术图片
package com.spring.demo02;

public class UserService {
    //配置文件注入:提供成员属性,设置set方法
    private UserDao userDao;
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    
    public void save() {
        System.out.println("业务层。。。");
        //调用
        userDao.save();
    }
}
View Code

配置文件设置依赖注入:

技术图片
<?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.xsd">
       
       <!-- 演示的依赖注入 -->
       <bean id="userDao" class="com.spring.demo02.UserDao"/>
       
       <bean id="userService" class="com.spring.demo02.UserService">
           <property name="userDao" ref="userDao"/>
       </bean>
       
</beans>
View Code

测试依赖注入:

技术图片
package com.spring.demo02;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDI {
    @Test
    public void run() {
        //创建容器对象,加载配置文件,创建userDao对象,userService也被创建
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取userService对象
        UserService userService = (UserService) context.getBean("userService");
        //调用save方法
        userService.save();
    }
}
View Code

运行结果:

技术图片

 

 

方式二:构造函数注入

User:

技术图片
package com.spring.demo03;

public class User {
    private String name;
    private Integer age;
    
    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
}
View Code

配置文件设置依赖注入:

技术图片
<?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.xsd">
       
       <!-- 方式一:Set注入 -->
       <bean id="userDao" class="com.spring.demo02.UserDao"/>
       
       <bean id="userService" class="com.spring.demo02.UserService">
           <property name="userDao" ref="userDao"/>
       </bean>
       
       
       <!-- 方式二:构造方法的注入方式:name是属性名称,value是注入的值,如果要出入引用使用raf标签 -->
       <bean id="user" class="com.spring.demo03.User">
           <constructor-arg name="name" value="Tom"/>
           <constructor-arg name="age" value="18"/>
           
           <!-- 第二种方式  index写序号就行 -->
           <!-- <constructor-arg index="0" value="Tom"/>
           <constructor-arg name="1" value="18"/> -->
           
           
       </bean>
View Code

测试:

技术图片
package com.spring.demo03;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDI {
    @Test
    public void run() {
        //创建容器对象,加载配置文件,创建User类的对象,并构造函数初始化
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取user对象
        User user = (User) context.getBean("user");
        System.out.println(user);
    }
}
View Code

运行结果:

技术图片

 

 

方式三:p命名空间注入方式

User:

技术图片
package com.spring.demo03;

public class User {
    private String name;
    private Integer age;
    
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }



    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
    
}
View Code

配置文件设置依赖注入:

技术图片
<?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.xsd">
    
    <!-- 方式三:p命名空间注入方式 -->
    <bean id="user" class="com.spring.demo03.User" p:name="Tom" p:age="18" />        
       
</beans>
View Code

技术图片

 

 配置文件中需要设置命名空间p

测试:

技术图片
package com.spring.demo03;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDI {
    @Test
    public void run() {
        //创建容器对象,加载配置文件,创建User类的对象,并构造函数初始化
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取user对象
        User user = (User) context.getBean("user");
        System.out.println(user);
    }
}
View Code

运行结果;

技术图片

 

 

方式四:集合方式

 

 

 

 

 

SpringDI--依赖注入(配置文件方式)

标签:sch   ica   配置文件   配置   方法   name   print   dex   frame   

原文地址:https://www.cnblogs.com/jumpkin1122/p/11623374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!