纯注解快速使用spring IOC容器
使用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容器的更多相关文章
- Spring注解驱动开发之Ioc容器篇
前言:现今SpringBoot.SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解.原理,比如@Conditional.@Import.@Ena ...
- Spring IOC容器装配Bean_基于注解配置方式
bean的实例化 1.导入jar包(必不可少的) 2.实例化bean applicationContext.xml(xml的写法) <bean id="userDao" cl ...
- Spring IOC 容器源码分析
声明!非原创,本文出处 Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器.既然大家平时都要用到 Spring,怎么可以不好好了解 S ...
- Spring IOC容器源码分析
注:本文转自https://javadoop.com/post/spring-ioc Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容 ...
- 深入理解Spring IOC容器
本文将从纯xml模式.xml和注解结合.纯注解的方式讲解Spring IOC容器的配置和相关应用. 纯XML模式 实例化Bean的三种方式: 使用无参构造函数 默认情况下,会使用反射调用无参构造函数来 ...
- 深入理解Spring IOC容器及扩展
本文将从纯xml模式.xml和注解结合.纯注解的方式讲解Spring IOC容器的配置和相关应用. 纯XML模式 实例化Bean的三种方式: 使用无参构造函数 默认情况下,会使用反射调用无参构造函数来 ...
- 【Spring】非Spring IOC容器下获取Spring IOC上下文的环境
前言 在Spring Web项目中,有些特殊的时候需要在非Spring IOC容器下获取Spring IOC容器的上下文环境,比如获取某个bean. 版本说明 声明POM文件,指定需引入的JAR. & ...
- Spring IOC容器基本原理
2.2.1 IOC容器的概念IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中new相关的对象,应用程序由IOC容器 ...
- spring揭密学习笔记(3)-spring ioc容器:Spring的IoC容器之BeanFactory
1. Spring的IoC容器和IoC Service Provider的关系 Spring的IoC容器和IoC Service Provider所提供的服务之间存在一定的交集,二者的关系如图4-1所 ...
随机推荐
- Fixjs实践——标签、按钮控件
Fixjs介绍 Fixjs是一款javascript界面基础框架,主要为开发复杂组件提供底层的框架支持. Fixjs 0.3.0主要增加了文本显示类fixjs.text.TextField 支持的主要 ...
- ASP.NET控件Repeter的使用
使用repeter控件,绑定数据源,能够省去在前台页面中拼接繁杂的for.foreach的时间,整个页面看起来也更加直观.常配合<select>标签.<table>标签使用. ...
- redis 学习笔记——redis集群
redis-cluster 简介 redis-cluster是一个分布式.容错的redis实现,redis-cluster通过将各个单独的redis实例通过特定的协议连接到一起实现了分布式.集群化的目 ...
- Css3新特性应用之过渡与动画
目录 背景与边框第一部分 背景与边框第二部分 形状 视觉效果 字体排印 用户体验 结构与布局 过渡与动画 源码下载 一.缓动效果 学习和利用贝塞尔曲线,默认支持ease,ease-in,ease-ou ...
- SQLite 约束
约束是在表的数据列上强制执行的规则.这些是用来限制可以插入到表中的数据类型.这确保了数据库中数据的准确性和可靠性. 约束可以是列级或表级.列级约束仅适用于列,表级约束被应用到整个表. 以下是在 SQL ...
- B+树概念学习
转载自 从B树.B+树.B*树谈到R 树 1.用阶定义的B树 B 树又叫平衡多路查找树.一棵m阶的B 树 (注:切勿简单的认为一棵m阶的B树是m叉树,虽然存在四叉树,八叉树,KD树,及vp/R树/R* ...
- 一个App从创意到最终上架到App Store里的整个过程是怎样的?
一个App从创意到最终上架到App Store里的整个过程是怎样的? 制作App需要什么软件?应该看什么书?需要哪些设备?推到App Store里,需要注册什么网站?是否需要付费?需要什么证书之类的? ...
- 视频编辑SDK---我们只提供API,任你自由设计炫酷的功能
面对相对复杂的视频编辑处理技术,你是否束手无策? 在短视频应用中,有一定技术难度的视频编辑技术中,我们提出了一种全新的解决方法:画板和画笔.短视频处理,用画板和画笔,就够了! 我们设计了极其简单易懂的 ...
- 前端知识点一HTML相关知识点
1.浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层.表示层.行为层 分别是:HTML.CSS.JavaScript 作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaSc ...
- MyBatis 3 与 Spring 4 整合关键
MyBatis 3 与 Spring 4 整合关键 MyBatis与Spring整合,首先需要一个Spring数据源.其次有两个关键,配置sqlSessionFactory时需要配置扫描sql映射xm ...