Spring中为了减少XML配置,可以声明一个配置类类对bean进行配置,主要用到两个注解@Configuration和@bean

例子:

  • 首先,XML中进行少量的配置来启动java配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<context:component-scan base-package="com.demo.config"/>
</beans>
  • 定义一个配置类,用@Configuration注解该类,等价于XML里的<beans>,用@Bean注解方法,等价于XML配置的<bean>,方法名等于beanId。代码如下:
@Configuration
public class SpringConfig {
@Bean
public Service service(){
return new Service();
}
@Bean
public Client client(){
return new Client();
}
}
  • 其他Bean代码:
public class Service {
public String sayHello(){
return "HelloWord!";
}
}
public class Client {
@Autowired
Service service;
public void invokeService(){
System.out.println("client invoke :" + service.sayHello());
}
}
  • 测试类
public class Test {

    public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
Client client = context.getBean("client",Client.class);
client.invokeService();
}
}

加载XML中配置的beans和bean用:

ApplicationContext ctx = new ClassPathXmlApplicationContext("config/bean.xml");// 读取bean.xml中的内容
Counter c = ctx.getBean("client", Client.class);// 创建bean的引用对象

  • 运行结果

  • 写在最后

SpringBean的创建和注入有三种,XML、注解、java配置文件。

因为XML配置较为繁琐,现在大部分开始用注解和java配置,一般什么时候用注解或者java配置呢?

基本原则是:全局配置用java配置(如数据库配置,MVC,redis等相关配置),业务Bean的配置用注解(@Service @Component@Repository@Controlle)。

最新文章

  1. json的理解及读取
  2. iOS开发使用半透明模糊效果方法整理
  3. 转载--tomcat整合apr
  4. 关于Java中的程序,进程和线程的详解...
  5. 3732 Ahui Writes Word
  6. 现代程序设计——homework-02
  7. SQLite入门与分析(八)---存储模型(3)
  8. 线段树(维护最大值):HDU Billboard
  9. js实现鼠标拖拽div-------Day44
  10. kettle表输入条件参数设置
  11. [Python Study Notes]内存信息
  12. App自动更新(DownloadManager下载器)
  13. 阅读&lt;Video Timing Controller&gt;笔记
  14. VMware ESXI6.0服务器安装
  15. react 学习日记
  16. tensorflow变量作用域(variable scope)
  17. 04 Effective Go 高效的go语言 重点内容
  18. SQLServer系统变量使用
  19. nohup和&amp;后台运行,进程查看及终止 详解
  20. apache phoenix 安装试用

热门文章

  1. java集合之 ConcurrentHashMap的产生
  2. Linux等操作系统杂谈
  3. _proto_和prototype的区别
  4. Chrome之谷歌插件开发
  5. iPhone屏幕适配,历史及现状(http://hjcapple.github.io/2014/10/10/iphone-screen.html)
  6. host.conf - 解析配置文件
  7. 【TensorFlow探索之一】MNIST的初步尝试
  8. 设备中LPC2368芯片个例参数问题导致故障的分析
  9. Linux--磁盘管理--04
  10. Hive的架构(二)