Spring中,使用Java配置的方式进行依赖注入
之前用spring的时候,只知道使用xml的方式,和使用注解的方式,却一直不知道在spring中,还可以使用Java类的方式进行配置。使用Java类的方式,就可以取代xml和注解。使用Java配置是Spring4版本的推荐的配置方式,在spring boot中得到了很广泛的应用,也是spring boot推荐的配置方式。
今天大概学习了一下,怎么使用java配置的方式对spring进行配置来使用以来注入功能。
首先我们演示使用注解的方式配置spring,注解的一些功能全部以注释的形式展示。Spring容器类选用AnnotationConfigApplicationContext。
- 功能类1,FunctionService
package site.wangxin520.springstudy.dependency.injection; import org.springframework.stereotype.Service; //使用@service注解声明当前的类,是spring管理的一个Bean
//可以根据需要,选择@Component @Servie @Repository @Controller
@Service
public class FunctionService { /**
* 返回一个字符串,在参数字符串前面加入hello,拼成一个新字符串
* @param word
* @return
*/
public String sayHallo(String word){
return "hello "+word+" !";
} }
- 功能类2,UseFunctionService
package site.wangxin520.springstudy.dependency.injection; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserFuctionService { //@Autowired是自动注入的注解,将实例化好的FunctionService类注入到本类中的属性。
@Autowired
FunctionService functionService; public String sayHello(String word){
return functionService.sayHallo(word);
} }
- 配置类DiConfig
package site.wangxin520.springstudy.dependency.injection; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; /**
* 配置类
* @author wangXgnaw
*
*/
@Configuration//声明当前类是一个配置类
@ComponentScan("site.wangxin520.springstudy")//相当于xml中配置到 扫描包
public class DiConfig { }
- Test测试类
package site.wangxin520.springstudy.dependency.injection;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DiConfig.class);
UserFuctionService userFuctionService = context.getBean(UserFuctionService.class);
String sayHello = userFuctionService.sayHello("小帅哥,快来玩呀");
System.out.println(sayHello);
}
}
- 控制台输出为

完全可以运行,而本例子中,没有配置任何xml文件。
下面介绍另一种方式,不在类上面使用注解,而直接使用Java配置。
同样,还是上面的列子,不过在新例子中,去掉了@Service和@AutoWired注解
- FunctionService功能类1
package site.wangxin520.springstudy.javaconf;
public class FunctionService {
public String sayHallo(String word){
return "hello "+word+" !";
}
}
- UserFunctionService功能类2
package site.wangxin520.springstudy.javaconf;
public class UserFuctionService {
FunctionService functionService;
public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}
public String sayHello(String word) {
return functionService.sayHallo(word);
}
}
- JavaConfig
package site.wangxin520.springstudy.javaconf; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
//这里注意的是,没有使用包扫描的注解
public class JavaConfig { @Bean//使用Bean注解声明当前方法的返回值是一个Bean,名称就是方法名
public FunctionService functionService(){
return new FunctionService();
} @Bean
public UserFuctionService userFuctionService(){
//当使用userFunctionService时候,就会调用这个里面的方法去获取bean
UserFuctionService userFuctionService=new UserFuctionService();
userFuctionService.setFunctionService(functionService());
return userFuctionService; } @Bean//这是另外一种注入的方式,直接使用参数注入的方式
public UserFuctionService userFuctionService(FunctionService functionService){ UserFuctionService userFuctionService=new UserFuctionService();
userFuctionService.setFunctionService(functionService());
return userFuctionService; } }
- Test
package site.wangxin520.springstudy.javaconf;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
UserFuctionService userFuctionService = context.getBean(UserFuctionService.class);
String sayHello = userFuctionService.sayHello("小帅哥,快来玩呀");
System.out.println(sayHello);
}
}
- 控制台输出

表示,这个还没有xml方便,不喜欢。
Spring中,使用Java配置的方式进行依赖注入的更多相关文章
- Spring中三种配置Bean的方式
Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...
- spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式
spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...
- JAVA配置&注解方式搭建简单的SpringMVC前后台交互系统
前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html htt ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
- 浅谈Spring中的Quartz配置
浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...
- (七)理解angular中的module和injector,即依赖注入
(七)理解angular中的module和injector,即依赖注入 时间:2014-10-10 01:16:54 阅读:63060 评论:1 收藏:0 [点 ...
- Bean 注解(Annotation)配置(3)- 依赖注入配置
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- Bean XML 配置(3)- 依赖注入配置
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- Spring专题2: DI,IOC 控制反转和依赖注入
合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...
随机推荐
- gem install cocoapods ERROR: While executing gem ... (Gem::FilePermissionError)
在cocoapods 执行 sudo gem install cocoapods 的时候出现 While executing gem ... (Gem::FilePermissionError) ...
- Extended VM Disk In VirtualBox or VMware (虚拟机磁盘扩容)
First, Clean VM all snapshot, and poweroff your VM. vmdk: vmware-vdiskmanager -x 16GB myDisk.vmdk vd ...
- 【代码审计】XIAOCMS_存在任意文件删除漏洞分析
0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...
- lua_gc源码学习
最近发现在大数据量的 lua 环境中,GC 占据了很多的 CPU .差不多是整个 CPU 时间的 20% 左右.希望着手改进.这样,必须先对 lua 的 gc 算法极其实现有一个详尽的理解.我之前读过 ...
- 使用jquery的 $.grep实现es6的filter效果
现在es6是趋势,习惯了es6会方便的多,但是有时候由于项目的限制,会限制es6的使用,在处理数组的时候,往往会想将一个数组进行过滤产生另一个新数组,如es6的filter 如下,我又一个数组,[1, ...
- iOS开发——iOS7(及以后版本) SDK自带二维码(含条形码)扫码、二维码生成
本文转载至 http://www.cnblogs.com/leotangcn/p/4357907.html 现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来 ...
- 【LeetCode OJ】Merge Two Sorted Lists
题目:Merge two sorted linked lists and return it as a new list. The new list should be made by splicin ...
- Material Design系列第六篇——Defining Custom Animations
Defining Custom Animations //自定义动画 This lesson teaches you to //本节课知识点 Customize Touch Feedback //1. ...
- java基础---->git的使用(一)
这里面记录一下git的使用,只是平时工作中遇到的一些问题的解决方案,不会涉及到git的一些基础概念及说明.人的天性便是这般凉薄,只要拿更好的来换,一定舍得. Git的一些使用 一.在码云建立好仓库之后 ...
- 【Spring Boot&&Spring Cloud系列】Spring Boot中使用NoSql数据库Redis
github地址:https://github.com/AndyFlower/Spring-Boot-Learn/tree/master/spring-boot-nosql-redis 一.加入依赖到 ...