之前用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配置的方式进行依赖注入的更多相关文章

  1. Spring中三种配置Bean的方式

    Spring中三种配置Bean的方式分别是: 基于XML的配置方式 基于注解的配置方式 基于Java类的配置方式 一.基于XML的配置 这个很简单,所以如何使用就略掉. 二.基于注解的配置 Sprin ...

  2. spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式

    spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...

  3. JAVA配置&注解方式搭建简单的SpringMVC前后台交互系统

    前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html htt ...

  4. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

  5. 浅谈Spring中的Quartz配置

    浅谈Spring中的Quartz配置 2009-06-26 14:04 樊凯 博客园 字号:T | T Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在 ...

  6. (七)理解angular中的module和injector,即依赖注入

    (七)理解angular中的module和injector,即依赖注入 时间:2014-10-10 01:16:54      阅读:63060      评论:1      收藏:0      [点 ...

  7. Bean 注解(Annotation)配置(3)- 依赖注入配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  8. Bean XML 配置(3)- 依赖注入配置

    Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...

  9. Spring专题2: DI,IOC 控制反转和依赖注入

    合集目录 Spring专题2: DI,IOC 控制反转和依赖注入 https://docs.spring.io/spring/docs/2.5.x/reference/aop.html https:/ ...

随机推荐

  1. Windows下切换盘符

    方法: 直接输入盘符+引号,例如输入D:,不区分大小写. 使用cd命令,例如cd /d D: 使用cd命令有一些要注意的地方: 在同一个磁盘分区里,不需要加上\d,但是不同磁盘分区切换的时候,需要加上 ...

  2. iOS Runloop的超级讲解

    这是目前看过的最好的一片中文讲解RunLoop的文章,推荐给大家看一下,原文链接:http://blog.ibireme.com/2015/05/18/runloop/ https://segment ...

  3. c++的字节对齐

    win32平台下的微软C编译器对齐策略: 1)结构体变量的首地址能够被其最宽数据类型成员的大小整除.编译器在为结构体变量开辟空间时,首先找到结构体中最宽的数据类型,然后寻找内存地址能被该数据类型大小整 ...

  4. RAC的搭建(二)--创建ASM磁盘

     1. 规划 表决磁盘: 1Gx3(3节点以下,建议都采用这种配置,三个磁盘加起来要大于1.8G,否则会报错) 数据磁盘: 10Gx1 闪回磁盘: 5Gx1 2. 创建共享磁盘 virtualBox上 ...

  5. C#实现HTTP请求文件下载,GET、POST请求的数据流接收

    做项目的时候由于插件Phaser请求audio的时候,不允许跨域,具体提示====> 已拦截跨源请求:同源策略禁止读取位于 http://ttyouni.com/1.mp3 的远程资源.(原因: ...

  6. chattr lsattr

    chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTt ...

  7. 架设FTP Server-Windows Server 2012

    架设FTP Server-Windows Server 2012 https://jingyan.baidu.com/article/03b2f78c75b9b65ea237ae84.html   在 ...

  8. Trie树的分析与实现

    字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用字符串的 ...

  9. JSON语法介绍

      官网:https://www.json.org/     JSON (JavaScript Object Notation) is a lightweight data-interchange f ...

  10. win7 查看当前java路径

    C:\Users\zh>where javaC:\Windows\System32\java.exeD:\TOOL\jdk1.8.0_91\bin\java.exeD:\TOOL\jdk1.8. ...