Spring IOC配置示例

本文深入解析Spring框架中依赖注入的多种方式,包括自动注入、构造器注入、Setter方法注入及接口注入,同时提供了详细的代码示例和XML配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关类(演示方便,类体省略)

// 接口
public interface IDao {
	...
}
// 接口实现类
public class IDaoImpl implements IDao {
	...
}
// 引用类
public class ServiceImpl {
    ...
}
自动注入

开启注解扫描,
使用 @Component 注解标识组件,为了区分不同类的用途,相应的还可以用 @Repository / @Service / @Controller 注解
使用 @Autowired 或者 @Resource 注解注入依赖对象

// 接口实现类
@Component
public class IDaoImpl implements IDao {
	...
}
// 引用类
@Component
public class ServiceImpl {
	@Autowired //@Resource
    private IDao dao;
    ...
}

<!-- 开启注解扫描 -->
xml配置:<context:component-scan base-package="com.bean"/>
或者
注解:@ComponentScan(basePackages={"com.bean"})
xml配置注入
方式1.构造器注入
// 引用类
public class ServiceImpl {
    private IDaoImpl daoImpl;
    
    //提供构造方法,进行构造器注入
    public ServiceImpl(IDaoImpl daoImpl){
        this.daoImpl= daoImpl;
    }
    ...
}

<!-- xml配置 -->
<bean id="daoImpl" class="com.bean.DaoImpl"/>
<bean class="com.bean.ServiceImpl">
	<constructor-arg index="0" ref="daoImpl"/>
</bean>
方式2.Setter方法注入
// 引用类
public class ServiceImpl {
    private IDaoImpl daoImpl;
    
    //提供setter方法,进行属性注入
    public IDaoImpl getDaoImpl() { return daoImpl; }
    public void setDaoImpl(IDaoImpl daoImpl) { this.daoImpl = daoImpl; }
    ...
}

<!-- xml配置 -->
<bean id="daoImpl" class="com.bean.DaoImpl"/>
<bean class="com.bean.ServiceImpl">
	<property name="daoImpl" ref="daoImpl"/>
</bean>  
方式3.接口注入

类同Setter方法注入,只是依赖属性的类型变成了接口,而非实现类。
下面代码将原来的 IDaoImpl 变成了 IDao

// 引用类
public class ServiceImpl {
    private IDao dao;
    
    //提供setter方法,进行属性注入
    public IDao getDao() { return dao; }
    public void setDao(IDao dao) { this.dao = dao; }
    ...
}

<!-- xml配置 -->
<bean id="daoImpl" class="com.bean.DaoImpl"/>
<bean class="com.bean.ServiceImpl">
	<property name="dao" ref="daoImpl"/>
</bean>  
手动注入

就是手动 new 对象,手动 set

IDao daoImpl = new IDaoImpl();
ServiceImpl service = new ServiceImpl();
service.setDao(daoImpl);

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值