Spring框架(三)依赖注入之注解方式
2016-12-29 14:45
176 查看
本篇文章建立在上一篇【依赖注入的概念】基础之上,如果没有看上一篇,建议先看看。
依赖注入只是Spring众多功能中的一个,也是比较重要的一个。此篇文章我们将介绍怎么使用Spring的注解完成依赖注入功能。此篇文章的案例建立在上一篇的基础之上,我们举过一个例子,就是老板和秘书之间的关系:一般领导都会有一个秘书,要秘书有什么用呢?估计大家都知道,可以把一些事情交给秘书来做,减少领导的工作量,这样领导有更多精力去处理那些更重要的事情。
比如,领导要喝水,如果没有秘书就是自己去倒水,浪费时间;
如果有秘书,就是秘书倒好谁递到领导手上,领导就没有毕业为这点小事分心了。接下来使用Spring注解来完成上面的场景。代码如下:
0、Spring的Jar包导入
依赖注入属于Spring Core模块中的内容,所以按照我们之前写的一篇文章【Spring简单介绍】的介绍中来看,需要的jar包如下:
1、创建一个Water类,表示茶水:
package com.androidxx.ioc;
/**
* 水
* @author yangjw
*
*/
public class Water {
@Override
public String toString() {
return "茶水";
}
}
2、创建一个Leader类,表示老板:
package com.androidxx.ioc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 领导
* @author yangjw
*
*/
@Component
public class Leader {
private Water water;
@Autowired
public void setWater(Water water) {
this.water = water;
}
/**
* 喝水
*/
public void drink() {
//打印日志,用来表示领导喝水了
System.out.println("领导喝" + water);
}
}说明:
以上代码中用到了@Component和@Autowired注解,他们的含义如下:
@Component:是一个类级别的注解,作用于Class上,表示此类是一个需要Spring处理的组件。
@Autowired:是一个方法级别的注解,主要作用于构造器或者方法上,表示此方法的形参需要得到Spring的注入。比如setWater方法中的参数Water对象,需要Spring自动注入进来,而不是用户去New一个。
一般情况下,只要有@Autowired的类,都必须使用@Component注解。这样完整的解释就是,@Component类中有一个被@Autowired注解的方法中的参数需要Spring注入。
3、创建一个Secretary类,表示秘书:
package com.androidxx.ioc;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 秘书
* @author yangjw
*
*/
@Configuration
@ComponentScan
public class Secretary {
/**
* 倒水的行为
* @return 准备好的水
*/
@Bean
public Water getWater() {
return new Water();
}
}
说明:
以上代码中用到三个注解,分别是:
@Bean:表示由getWater这个方法提供需要被注入的Bean对象。结合上面的例子解释就是提供所需要的茶水。
@ComponentScan:表示所需要的Bean对象在此类中进行扫描(scan)。此注解就表示当前类是一个提供所需对象的类,结合上面的例子就是用@ComponentScan注解的类是一个秘书。
@Configuration:表示此类在Spring初始化配置的时候就要被加载和编译。
4、Spring的初始化,并执行。
package com.androidxx.ioc;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class LeaderTest {
@Test
public void test() {
//初始化Spring配置,此句代码就是在加载被@Configuration注解的配置类,并将@Bean注解的方法提供的对象预先加载到缓存中。
ApplicationContext appCtx = new AnnotationConfigApplicationContext(Secretary.class);
//从Spring的ApplicationContext中取出缓存的Bean对象,也就是Leader对象
Leader leader = appCtx.getBean(Leader.class);
//领导喝水
leader.drink();
}
}
以上就是Spring通过注解的方式完成的依赖注入,其中我们主要掌握几个注解的使用方法就行。重要代码上面也都写有注释,如果有不明白的,欢迎提问。
当然,Spring依赖注入的注解很多,本篇文章中我们只是提到了几个常用的注解,后面将会重新写一篇文章介绍更全面的Spring依赖注入的注解。
以上案例都是创建的简单Java Project完成的。
梦想,是用来想的。想美了,再埋头写代码。
依赖注入只是Spring众多功能中的一个,也是比较重要的一个。此篇文章我们将介绍怎么使用Spring的注解完成依赖注入功能。此篇文章的案例建立在上一篇的基础之上,我们举过一个例子,就是老板和秘书之间的关系:一般领导都会有一个秘书,要秘书有什么用呢?估计大家都知道,可以把一些事情交给秘书来做,减少领导的工作量,这样领导有更多精力去处理那些更重要的事情。
比如,领导要喝水,如果没有秘书就是自己去倒水,浪费时间;
如果有秘书,就是秘书倒好谁递到领导手上,领导就没有毕业为这点小事分心了。接下来使用Spring注解来完成上面的场景。代码如下:
0、Spring的Jar包导入
依赖注入属于Spring Core模块中的内容,所以按照我们之前写的一篇文章【Spring简单介绍】的介绍中来看,需要的jar包如下:
1、创建一个Water类,表示茶水:
package com.androidxx.ioc;
/**
* 水
* @author yangjw
*
*/
public class Water {
@Override
public String toString() {
return "茶水";
}
}
2、创建一个Leader类,表示老板:
package com.androidxx.ioc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 领导
* @author yangjw
*
*/
@Component
public class Leader {
private Water water;
@Autowired
public void setWater(Water water) {
this.water = water;
}
/**
* 喝水
*/
public void drink() {
//打印日志,用来表示领导喝水了
System.out.println("领导喝" + water);
}
}说明:
以上代码中用到了@Component和@Autowired注解,他们的含义如下:
@Component:是一个类级别的注解,作用于Class上,表示此类是一个需要Spring处理的组件。
@Autowired:是一个方法级别的注解,主要作用于构造器或者方法上,表示此方法的形参需要得到Spring的注入。比如setWater方法中的参数Water对象,需要Spring自动注入进来,而不是用户去New一个。
一般情况下,只要有@Autowired的类,都必须使用@Component注解。这样完整的解释就是,@Component类中有一个被@Autowired注解的方法中的参数需要Spring注入。
3、创建一个Secretary类,表示秘书:
package com.androidxx.ioc;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 秘书
* @author yangjw
*
*/
@Configuration
@ComponentScan
public class Secretary {
/**
* 倒水的行为
* @return 准备好的水
*/
@Bean
public Water getWater() {
return new Water();
}
}
说明:
以上代码中用到三个注解,分别是:
@Bean:表示由getWater这个方法提供需要被注入的Bean对象。结合上面的例子解释就是提供所需要的茶水。
@ComponentScan:表示所需要的Bean对象在此类中进行扫描(scan)。此注解就表示当前类是一个提供所需对象的类,结合上面的例子就是用@ComponentScan注解的类是一个秘书。
@Configuration:表示此类在Spring初始化配置的时候就要被加载和编译。
4、Spring的初始化,并执行。
package com.androidxx.ioc;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class LeaderTest {
@Test
public void test() {
//初始化Spring配置,此句代码就是在加载被@Configuration注解的配置类,并将@Bean注解的方法提供的对象预先加载到缓存中。
ApplicationContext appCtx = new AnnotationConfigApplicationContext(Secretary.class);
//从Spring的ApplicationContext中取出缓存的Bean对象,也就是Leader对象
Leader leader = appCtx.getBean(Leader.class);
//领导喝水
leader.drink();
}
}
以上就是Spring通过注解的方式完成的依赖注入,其中我们主要掌握几个注解的使用方法就行。重要代码上面也都写有注释,如果有不明白的,欢迎提问。
当然,Spring依赖注入的注解很多,本篇文章中我们只是提到了几个常用的注解,后面将会重新写一篇文章介绍更全面的Spring依赖注入的注解。
以上案例都是创建的简单Java Project完成的。
梦想,是用来想的。想美了,再埋头写代码。
相关文章推荐
- Spring IOC 依赖注入的两种方式:XML和注解
- 原始方式:spring四种依赖注入方式 |注解方式:Spring零配置通过注解实现Bean依赖注入
- Spring IOC 依赖注入的两种方式XML和注解
- Spring框架-----依赖注入的方式
- spring通过注解依赖注入和获取xml配置混合的方式
- @Inject注解来实现Java EE CDI方式的依赖注入。
- spring四种依赖注入方式 (set,构造器,工厂,注解 )
- SSH:通过注解(Annotation)的方式在Spring IoC容器中注入依赖
- 07 Spring框架 依赖注入(四)基于注解的依赖注入
- Spring依赖注入方式_属性setter方法注入_构造器注入_注解注入
- 使用spring注解方式实现组件的声明,并且用注解注入方式解决依赖关系
- Spring第七弹—依赖注入之注解方式注入及编码解析@Resource原理
- spring 注解方式实现依赖注入
- Spring IOC 依赖注入的两种方式XML和注解
- Spring——基于注解方式的依赖注入
- Spring IOC 依赖注入的两种方式XML和注解
- Spring IOC 依赖注入的两种方式XML和注解
- Spring依赖注入——java项目中使用spring注解方式进行注入
- Spring依赖注入的四种方式(重点是注解方式)
- 07 Spring框架 依赖注入(四)基于注解的依赖注入