使用spring的ioc容器实现对bean的管理与基本的依赖注入是再经典的应用了。基础使用不在详述。

这里主要介绍下使用注解实现零配置的spring容器。我相信你也会更喜欢使用这种方式。
Spring 3.0引入了JavaConfig,这种写法比xml文件的好处是具备类型安全检查.

1.定义一个简单的组件

package spring4;
import org.springframework.stereotype.Component;
/**
* Created by java技术.
*/ @Component
public class Compent {  
  public void show(){
     System.out.println("i am compent");
  }
}

2.定义配置信息类

package spring4;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* Created by java技术.
*/ @Configuration("name") //表示这是一个配置信息类,可以给这个配置类也起一个名称
@ComponentScan("spring4") //类似于xml中的<context:component-scan base-package="spring4"/>
public class Config {  
  @Autowired //自动注入,如果容器中有多个符合的bean时,需要进一步明确
  @Qualifier("compent") //进一步指明注入bean名称为compent的bean
  private Compent compent;
 
  @Autowired
  @Qualifier("newbean")    
  private Compent newbean;    
  @Bean //类似于xml中的<bean id="newbean" class="spring4.Compent"/>
  public Compent newbean(){        
    return new Compent();
  }    
  public void print(){
    System.out.println("i am beanname");
    ompent.show();
    newbean.show();
  }
}

3.启动spring容器

package spring4;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* Created by java技术
*/ public class Application {    
  public static void main(String[] arg){        
//初始化spring容器,由于使用的是注解,没有xml文件,所有不再使用ClasspathXmlApplicationContext
    ApplicationContext context=new AnnotationConfigApplicationContext(Config.class);
    context.getBean("name",Config.class).print(); //配置类本身也是一个spring ioc容器中的bean,所以可以获取到它
  }
}

所有使用xml配置的信息都可以通过java类的方式配置。

混合使用多种配置方法

通常,可能在一个Spring项目中同时使用自动配置和显式配置,而且,即使你更喜欢JavaConfig,也有很多场景下更适合使用XML配置。幸运的是,这些配置方法可以混合使用。
首先明确一点:对于自动配置,它从整个容器上下文中查找合适的bean,无论这个bean是来自JavaConfig还是XML配置。
在JavaConfig中解析XML配置
通过@Import注解导入其他的JavaConfig,并且支持同时导入多个配置文件;
@Configuration
@Import({Config1.class, Config2.class})
public class SystemConfig {}

通过@ImportResource注解导入XML配置文件
@Configuration
@Import(Config1.class)
@ImportResource("classpath: config.xml")
public class SystemConfig {}

在XML配置文件中应用JavaConfig
通过<import>标签引入其他的XML配置文件;
通过<bean>标签导入Java配置文件到XML配置文件,例如<bean class="SystemConfig" />

事实上,基于xml的配置非常繁琐和笨重,注解已经成为事实上的主流。spring正是也注意到了这些,所以早已推出了支持注解的方式。spring体系中的boot项目更是为快速开发应用而生,零配置,一键启动web应用。作为开发者,我们更应该关注的是业务,不需要把时间花在对一些事实上会很少变更的形式的配置上。真正需要经常变更的也经常是业务上的配置,我们也会有相应的方案应对。

文章出处:

纯注解快速使用spring IOC容器的更多相关文章

  1. Spring注解驱动开发之Ioc容器篇

    前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...

  2. Spring IOC容器装配Bean_基于注解配置方式

    bean的实例化 1.导入jar包(必不可少的) 2.实例化bean applicationContext.xml(xml的写法) <bean id="userDao" cl ...

  3. Spring IOC 容器源码分析

    声明!非原创,本文出处 Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 S ...

  4. Spring IOC容器源码分析

    注:本文转自https://javadoop.com/post/spring-ioc Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容 ...

  5. 深入理解Spring IOC容器

    本文将从纯xml模式.xml和注解结合.纯注解的方式讲解Spring IOC容器的配置和相关应用. 纯XML模式 实例化Bean的三种方式: 使用无参构造函数 默认情况下,会使用反射调用无参构造函数来 ...

  6. 深入理解Spring IOC容器及扩展

    本文将从纯xml模式.xml和注解结合.纯注解的方式讲解Spring IOC容器的配置和相关应用. 纯XML模式 实例化Bean的三种方式: 使用无参构造函数 默认情况下,会使用反射调用无参构造函数来 ...

  7. 【Spring】非Spring IOC容器下获取Spring IOC上下文的环境

    前言 在Spring Web项目中,有些特殊的时候需要在非Spring IOC容器下获取Spring IOC容器的上下文环境,比如获取某个bean. 版本说明 声明POM文件,指定需引入的JAR. & ...

  8. Spring IOC容器基本原理

    2.2.1 IOC容器的概念IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器 ...

  9. spring揭密学习笔记(3)-spring ioc容器:Spring的IoC容器之BeanFactory

    1. Spring的IoC容器和IoC Service Provider的关系 Spring的IoC容器和IoC Service Provider所提供的服务之间存在一定的交集,二者的关系如图4-1所 ...

随机推荐

  1. Linux:备份

    一.每日备份数据 该脚本backupday.sh用来每日备份你需要备份的文件或目录 使用办法 1)打开脚本修改要备份的目录或文件和备份到的目录(如从A备份到B) 2)修改后运行脚本 需要备份数据时,直 ...

  2. Android开发(30)--AutoCompleteTextView和MultiAutoCompleteTextView自动提示输入内容

    首先大家都见过类似这种效果, AutoCompleteTextView是实现动态匹配输入的内容 下面就通过一个实例来说明AutoCompleteTextView,同样,AutoCompleteText ...

  3. 中文格式python 打印json格式的数据中文显示问题

    废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...

  4. C# 数据库连接测试以及备份

    现在我们要做一个如图5.1的数据库连接配置,从界面上看有三个功能需要实现:从配置文件中读取数据库连接的相关属性.备份数据库.测试连接. 现在我们就一个一个开始讲解. 图5.1 1.从配置文件中读取数据 ...

  5. java基础知识拾遗(三)

    1.类加载 bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类. extension classloader -扩展类加载器,它负责加载JRE的扩展目 ...

  6. 2016年美国数学建模比赛(MCM/ICM) E题环境科学 Are we heading towards a thirsty planet? 人工精准翻译。

    第二次参加建模,觉得建模太有趣了,用几天的时间,迅速学习新知识,并解决实际问题. ——————————————————————————————————————————————————————————— ...

  7. CoreCRM 开发实录 —— 单元测试之 Mock UserManager 和 SignInManager

    单元测试的核心就是:只测试眼前的逻辑.这就要求所有的依赖项都要使用仿类来代替,也就是所谓的 Mock Object.在测试 ProfileRepository 和 AccountController ...

  8. Grant简介以及安装

    Grant简介以及安装 1.   安装Grunt-cli需要使用npm,全局安装  命令:npm install –g grunt-cli(可能会涉及权限问题) 注意,安装grunt-cli并不等于安 ...

  9. sublime3下载安装及常用插件

    之前与学习前端有关的软件都安装在了实验室电脑上,最近由于要放寒假(也许我寒假回去会学习呢),于是得在笔记本电脑上重新安装一遍.几个软件各种出错,花了一下午才安装好,必须记录下来啊! 这篇文章主要介绍s ...

  10. Mac下安装node.js和webpack

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #393939 } p.p2 ...