2. Spring 4.2.3前瞻-对java8默认方法(default method)定义Bean的支持

翻译 2015年11月19日 22:33:53

2.1 默认方法(default method)

  • java8引入了一个default medthod;
  • 用来扩展已有的接口,在对已有接口的使用不产生任何影响的情况下,添加扩展
  • 使用default关键字
  • Spring 4.2.3支持加载在默认方法里声明的bean

2.2

  • 将要被声明成bean的类
public class DemoService {
    public void doSomething(){
        System.out.println("find bean in default method");
    }
}
  • 在接口的默认方法里定义bean
package com.wisely.spring4_2.3defaultMethod;

import org.springframework.context.annotation.Bean;
public interface DemoServiceConfig {

    @Bean(name="demoService")
    default DemoService DemoService(){
        return new DemoService();
    }

}
  • 配置类
package com.wisely.spring4_2.3defaultMethod;

import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig implements DemoServiceConfig{

}

  • 运行
package com.wisely.spring4_2.3defaultMethod;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {
    public static void main(String[] args) {
         AnnotationConfigApplicationContext context =
                    new AnnotationConfigApplicationContext("com.wisely.spring4_2.defaultMethod");
         DemoService ds = context.getBean(DemoService.class);
         ds.doSomething();
    }
}
  • 输出结果
find bean in default method

Java8中接口中可添加的default修饰方法体

我们都知道在Java语言的接口中只能定义方法名,而不能包含方法的具体实现代码。接口中定义的方法必须在接口的非抽象子类中实现。下面就是关于接口的一个例子: 1 2 ...
  • u012506661
  • u012506661
  • 2016年10月17日 14:28
  • 2128

Java8揭秘(三)Default 方法

第二章  Default 方法 为什么要有Default方法 一旦Java8发布,有件事情就显得非常重要,即能在不破坏现有实现架构的情况下往接口里增加方法。之所以引入Default方法到Java8...
  • wwwsssaaaddd
  • wwwsssaaaddd
  • 2014年04月21日 01:46
  • 26467

SpringMVC method属性与http请求方法一致

在springMVC中,@requestMapping注解有method属性,在没有指定method的值时,默认映射所有http请求方法,如果仅想接收一种请求方法,需用method=RequestMe...
  • theEmperor
  • theEmperor
  • 2016年12月27日 10:40
  • 2481

Spring中初始化bean和销毁bean的时候执行某个方法的详解

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过注解@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进...
  • dreamsunday
  • dreamsunday
  • 2015年12月03日 12:57
  • 4173

Spring:如何完整定义一个Bean

每当我们需要使用一个类时,我们最常见的操作是在spring的配置文件中加上如下配置: OK, 这样定义完成后我们就可以从bean工厂中直接根据id获取所定义的对象,并任性的使用它,于是有人不...
  • u013361010
  • u013361010
  • 2016年10月16日 15:01
  • 805

Spring 配置使用 - Bean 作用域

基本概念Scope,也称作用域,在 Spring IoC 容器是指其创建的 Bean 对象相对于其他 Bean 对象的请求可见范围。在 Spring IoC 容器中具有以下几种作用域:基本作用域(re...
  • u012420654
  • u012420654
  • 2016年10月08日 21:59
  • 2207

Spring基于注解实现Bean定义支持如下三种注解

Spring基于注解实现Bean定义支持如下三种注解: Spring自带的@Component注解及扩展@Repository、@Service、@Controller ,如图12-1所示; ...
  • RiceToLife
  • RiceToLife
  • 2016年07月20日 10:42
  • 4400

Spring中Bean的五个作用域

当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域: singleton:单例模式,在整个S...
  • u011468990
  • u011468990
  • 2015年11月23日 15:35
  • 18221

Spring 中bean与id 即默认值

在BeanFactory的配置中,是我们最常见的配置项,它有两个最常见的属性,即id和name,最近研究了一下,发现这两个属性还挺好玩的,特整理出来和大家一起分享。 1.id属性命名必须满足XM...
  • xubo_ob
  • xubo_ob
  • 2016年08月30日 10:49
  • 2352

Spring 通过工厂方法(Factory Method)来配置bean

Spring 通过工厂方法(Factory Method)来配置bean在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean.在第...
  • nvd11
  • nvd11
  • 2016年05月31日 00:26
  • 15771
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2. Spring 4.2.3前瞻-对java8默认方法(default method)定义Bean的支持
举报原因:
原因补充:

(最多只允许输入30个字)