【Spring学习笔记】依赖注入

来源:互联网 发布:怎么装潢淘宝店铺 编辑:程序博客网 时间:2024/03/29 16:58

每个java项目都是由很多的java类组成,细粒度到每个功能点都是由这些java类协同完成。

静/动态代理技术

在Spring依赖注入前工程师们为了降低代码耦合度试了很多的办法,其中被广泛使用的技术就是静/动态代理技术,这里就不做详细介绍。

静态与动态代理

Spring依赖注入

为了降低代码耦合度Spring引入了依赖注入技术,为了使java类协同作业需要Spring知道这些类的存在,所以我们需要将java类都注入到Spring容器中,这里Spring提供了两种实现方式。

一、组件自动扫描

Spring目前支持xml和java类两种注入方式,个人比较喜欢java类配置。

基于xml:

在xml配置类中增加“<context:component-scan>”并且java类上增加@Component即可扫描到组件beanId默认为类名称首字母小写。

基于java配置:

需要在java类上增加@Configuration标识这个类为配置类,并且增加@ComponentScan来扫描组件,其中java类必须增加@Component标签来注入Spring容器中。

二、显示注入

在xml中增加<bean class="类的路径" id="bean的id">

在java类中注入

javaBean接口

package com.example.readingli.inter;import com.example.readingli.bean.Book;public interface IReadingBook {/** * 通过书名获取 * @param bookName */Book doGetreadingBooks(String bookName);}

javaBean实现类

package com.example.readingli.impl;import com.example.readingli.bean.Book;import com.example.readingli.inter.IReadingBook;public class ReadingBookImpl implements IReadingBook {@Overridepublic Book doGetreadingBooks(String bookName) {return null;}}
java配置类

package com.example.readingli.cfg;import org.springframework.context.annotation.Configuration;import com.example.readingli.impl.ReadingBookImpl;import com.example.readingli.inter.IReadingBook;@Configurationpublic class JavaConfig {public IReadingBook getBook(){return new ReadingBookImpl();}}
组合配置

将多个java配置类组合到一起可以使用@Import标签例如:@Import(JavaCfg.class),将xml配置类导入到java配置类中使用@ImportResource(“classpath:xml名”),将java配置类引入到xml中<bean class="java配置类路径">

小结:

以上内容介绍了Spring的自动和显示注入,个人比较建议使用自动注入的方式,减少配置和维护成本。其中Java配置是一种新的配置方式,我也比较喜欢使用。

依赖注入是Spring中最核心的内容之一,必须全面掌握才能在之后的使用中游刃有余。




原创粉丝点击