之前用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. lua 按拉分析与合成

    -- 将数值分解成bytes_table local function decompose_byte(data) if not data then return data end local tb = ...

  2. NTP服务器时间集群借节点之间同步

    1.三个节点时间同步,cdh1,cdh2,cdh3 2.做法:cdh1从网络时间同步,然后cdh2和cdh3从cdh1节点同步 3.安装与自启动设置 yum install ntp 按上面的安装方式在 ...

  3. wireshark----linux

    1.[root@lc~]# tshark   Running as user "root" and group "root". This could be da ...

  4. C++ template —— 模板与继承(八)

    16.1 命名模板参数许多模板技术往往让类模板拖着一长串类型参数:不过许多参数都设有合理的缺省值,如: template <typename policy1 = DefaultPolicy1, ...

  5. WP8.1学习系列(第二十章)——添加控件和处理事件

    先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...

  6. 【git】 linux 环境安装git

    1 安装git依赖包 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUti ...

  7. vue经验 - 细节小知识点汇总(更新中...)

    1. $refs 数据这么绑定的: 然后在created中抛出来,猜猜看看打印的是两个什么? 结果如下: 第一个跑出来了,第二个,却undefiend,没有东西?!... 后来去官网查看$refs的解 ...

  8. jquery-json 插件使用方法

    var thing = { plugin: 'jquery-json', version: 2.4 }; var encoded = $.toJSON( thing ); // '{"plu ...

  9. Hive学习之数据去重

    insert overwrite table store select t.p_key,t.sort_word from ( select p_key, sort_word , row_number( ...

  10. Struts2之Action三种接收参数形式与简单的表单验证

    有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的A ...