专栏首页java干货Spring系列十一:Spring @Configuration注解

Spring系列十一:Spring @Configuration注解

我欲穿花寻路,直入白云深处,浩气展虹霓。

概述

Spring @Configuration注解有助于基于Spring注解的自动装配。@Configuration注解指示一个类声明了一个或多个@Bean方法,Spring容器可以对该类进行处理,以便在运行时为这些bean生成bean定义和服务请求。。

spring 2开始,我们就将bean配置写入xml文件中。但是Spring 3允许将bean定义移出xml文件。我们可以在Java文件本身中给出bean定义。这称为Spring Java Config功能(使用@Configuration注解)

Spring @Configuration注解用法

在任何类顶部使用@Configuration注解来声明该类提供了一个或多个@Bean方法,并且可以由Spring容器进行处理以在运行时为这些bean生成bean定义和服务请求。

@Configuration
public class AppConfig {
 
    @Bean(name="demoService")
    public DemoClass service()
    {
        
    }
}

Spring @Configuration注解示例

@Configuration注解的用法。

创建maven项目

mvn archetype:generate
    -DgroupId=cn.howtodoinjava.core
    -DartifactId=springCoreTest
    -DarchetypeArtifactId=maven-archetype-quickstart
    -DinteractiveMode=false
 
mvn eclipse:eclipse

更新Spring依赖项

<properties>
	<spring.version>3.0.5.RELEASE</spring.version>
  </properties>
 
  <dependencies>
      
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <!-- Spring 3 dependencies -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>${spring.version}</version>
	</dependency>

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>${spring.version}</version>
	</dependency>
	
	<!-- For JavaConfig -->
	<dependency>
		<groupId>cglib</groupId>
		<artifactId>cglib</artifactId>
		<version>2.2.2</version>
	</dependency>
	
  </dependencies>

创建spring bean

public interface DemoManager {
    public String getServiceName();
}
 
public class DemoManagerImpl implements DemoManager
{
    @Override
    public String getServiceName()
    {
        return "My first service with Spring 3";
    }
}

Spring配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import cn.howtodoinjava.core.beans.DemoManager;
import cn.howtodoinjava.core.beans.DemoManagerImpl;
 
@Configuration
public class ApplicationConfiguration {
 
    @Bean(name="demoService")
    public DemoManager helloWorld()
    {
        return new DemoManagerImpl();
    }
}

测试

测试Java Config 可配置的bean

package cn.howtodoinjava.core.verify;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 
import com.howtodoinjava.core.beans.DemoManager;
import com.howtodoinjava.core.config.ApplicationConfiguration;
 
public class VerifySpringCoreFeature
{
    public static void main(String[] args)
    {
        ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
 
        DemoManager  obj = (DemoManager) context.getBean("demoService");
 
        System.out.println( obj.getServiceName() );
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring系列第十九讲 @Configuration和@Bean注解详解

    @Configuration这个注解可以加在类上,让这个类的功能等同于一个bean xml配置文件,如下:

    易兮科技
  • Spring系列十二:Spring @Required注解

    在生产级应用程序中,IoC容器中可能声明了成百上千个bean,它们之间的依赖关系通常非常复杂。setter注入的一个缺点是,很难检查是否设置了所有必需的属性。使...

    java干货
  • Spring系列十三:Spring @Scheduled注解

    Spring使用@Scheduled注解为基于cron表达式的任务调度和异步方法执行提供了出色的支持。可以将@Scheduled注解与触发器元数据一起添加到方法...

    java干货
  • spring注解配置之@Configuration

    用户3687857
  • Spring boot之SpringApplicationBuilder,@@Configuration注解,@Component注解

    二十三年蝉
  • Spring系列十:Spring FactoryBean

    工厂bean是用作在IoC容器中创建其他bean的工厂,但它是特定的Spring的bean。从概念上讲,工厂bean非常类似于工厂方法,可以在bean构造期间由...

    java干货
  • Spring零配置之@Configuration注解详解。

    @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而Spring3.0之后可以...

    Java技术栈
  • 10个Spring经典高频的面试题,来答答看!

    Spring框架是一个为Java应用程序开发提供综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用...

    博文视点Broadview
  • Spring全解系列 - @Import注解

    @Import是Spring基于 Java 注解配置的主要组成部分。@Import注解提供了@Bean注解的功能,同时还有原来Spring基于 xml 配置文件...

    干货满满张哈希
  • [享学Netflix] 十五、Archaius和Spring Cloud的集成

    截止到上篇文章,其实关于Netflix Archaius的内容都已经讲述完了,理论上你现在应该可以没有障碍的使用它了。

    YourBatman
  • 【小家Spring】Spring解析@Configuration注解的处理器:ConfigurationClassPostProcessor(ConfigurationClassParser)

    在Spring3.0以后,官方推荐我们使用注解去驱动Spring应用。那么很多人就一下子懵了,不需要xml配置文件了,那我的那些配置项怎么办呢? @Confi...

    YourBatman
  • Spring经典高频面试题,原来是长这个样子

    本文选自《Spring 5核心原理与30个类手写实战》一书,文末参与互动有机会赢取本书。本文题目目录:

    博文视点Broadview
  • Spring系列之新注解配置+Spring集成junit+注解注入

    Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率 你本来要写一段很长的...

    一只胡说八道的猴子
  • Spring系列第十七讲 深入理解Java注解及Spring对注解的增强(上)

    代码中注释大家都熟悉吧,注释是给开发者看的,可以提升代码的可读性和可维护性,但是对于java编译器和虚拟机来说是没有意义的,编译之后的字节码文件中是没有注释信息...

    易兮科技
  • Spring系列第十八讲 深入理解Java注解及Spring对注解的增强(下)

    我们通过@Target元注解的属性值可以看出,这个@Inherited 是专门修饰注解的。

    易兮科技
  • Spring 必知概念(一)

    1、什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spri...

    冷冷
  • 这10道 Spring 常见面试题,你能搞定吗?

    今天先用10道题来热热身,千万别小看这10道题,能把这10道题回答上来的也算是很不错的。请看题:

    田维常
  • 如何优雅实现Spring Boot自动配置

    本文主要介绍如何把一个Spring项目(特别是一些公共工具类项目),基于Spring Boot自动配置的思想封装起来,使其他Spring Boot项目引入后能够...

    Bug开发工程师
  • 【Spring注解驱动开发】使用@Import注解给容器中快速导入一个组件

    作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了...

    冰河

扫码关注云+社区

领取腾讯云代金券