spring框架IOC设值注入

Posted 大师兄丶2K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring框架IOC设值注入相关的知识,希望对你有一定的参考价值。

spring以动态的形式来管理对象,注入分为两种:

1. 设置注入:直观  自然

2.构造注入:可以在构造器中决定依赖顺序

以下就是示例:

1.User实体类

package com.domain;

import java.io.Serializable;
/**
 * 
 * @author Mr
 * 实体类
 */
public class User implements Serializable {
    private Integer id;
    private String uname;
    private String upwd;
    private String email;
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getUpwd() {
        return upwd;
    }
    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    
}

2.dao实现类,接口省略,因为可以反向生成,就不多拽述了

package com.dao.impl;

import com.dao.IUserDao;
import com.domain.User;

public class IUserDaoImpl implements IUserDao {

    @Override
    public void save(User user) {
        // TODO Auto-generated method stub
        System.out.println("哇塞,保存用户信息了");
    }

}

3.biz实现类

package com.biz.impl;

import com.biz.IUserBiz;
import com.dao.IUserDao;
import com.dao.impl.IUserDaoImpl;
import com.domain.User;

public class IUserBizImpl implements IUserBiz {
    
/*    private IUser dao;
    
    public IUserBizImpl() {
        dao = new IUserImpl();
    }*/
    //上面是以前的方法
    private IUserDao dao;
    
    public IUserDao getDao() {
        return dao;
    }
    //专业注入
    //dao的set访问器,会被spring调用,实现设值注入
    public void setDao(IUserDao dao) {
        this.dao = dao;
    }


    @Override
    public void save(User user) {
        dao.save(user);

    }

}

4.applicationContext.xml配置文件内容

<bean id="dao" class="com.dao.impl.IUserDaoImpl"></bean>
    <bean id="biz" class="com.biz.impl.IUserBizImpl">
        <!-- 要引用dao -->
        <property name="dao" ref="dao"></property>
    </bean>
    
    <bean id="logbefore" class="com.aop.LoggerBefore"></bean>
    <bean id="logafter" class="com.aop.LoggerAfterReturing"></bean>

5.Test测试类

package com.test;

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

import com.biz.IUserBiz;
import com.domain.User;

/**
 * 
 * @author Mr
 * aop测试类
 */
public class Test {

    public static void main(String[] args) {
        //解析配置文件
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        
        IUserBiz biz = (IUserBiz) ac.getBean("biz");
        User users = new User();
        users.setUname("adsad");
        
        biz.save(users);
    }

}

6.测试结果,会在控制台打印出来dao接口实现类里的那句话

 

以上是关于spring框架IOC设值注入的主要内容,如果未能解决你的问题,请参考以下文章

Spring IOC的注入方式

Spring核心概念

构造注入

Ioc和AOP使用扩展

Spring框架学习总结

spring的依赖注入