很多程序员在开发的过程中都可能会遇到 SpringBoot 组件注册这个问题, 那么 SpringBoot 到底有那些组件注册方式呢?
今天主要就来和大家分享这个 SpringBoot 组件注册的几种方式, 希望可以帮大家快速解决当下的这个难题.
传统的 xml+@ImportResource[案例 demo2]
[if !supportLists]. [endif] 项目包结构
├─java
│ └─com
│ └─example
│ └─demo2
│ │ Demo2Application.java
│ │
│ └─entity
│ Stu.java
│
└─resources
application.properties
beans.xml
project.text
[if !supportLists]. [endif]beans.xml (配置文件)
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!--id 用来标识 bean, 是唯一的, 且只有一个; name 定义的是 bean 的 alias, 可以有多个, 并可能与其他的 bean 重名.-->
- <!-- 如果 id 和 name 都没有指定, 则用类全名作为 name-->
- <bean id="stu" class="com.example.demo2.entity.Stu">
- </bean>
- </beans>
- [if !supportLists]. [endif]Demo2Application(启动程序)
- package com.example.demo2;
- import com.example.demo2.entity.Stu;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.context.ConfigurableApplicationContext;
- import org.springframework.context.annotation.ImportResource;
- @SpringBootApplication
- // 使用 @ImportResource 导入 xml 资源
- @ImportResource(locations = "classpath:/beans.xml")
- public class Demo2Application {
- public static void main(String[] args) {
- // 使用 ConfigurableApplicationContext 上下文即可获取 Beans
- ConfigurableApplicationContext context = SpringApplication.run(Demo2Application.class, args);
- Stu stu = context.getBean("stu", Stu.class);
- System.out.println(stu.toString());
- //context 类型为 org.springframework.context.annotation.AnnotationConfigApplicationContext
- System.out.println(context.getClass().getName());
- context.close();
- }
- }
ClassPathXmlApplicationContext 与 ConfigurableApplicationContext 的关系
总结:
1. [endif] 优势: 可以指定 xml 文件, 用于以前的项目迁移
2. [endif] 问题: xml 配置冗余复杂, 现在都是基于注解和 JDKConfig
3. [endif] 拓展: IDEA 中的 Beans 查看显示图标为
转发 + 关注后私信我回复 [架构资料] 即可免费领取全套架构师学习资料
来源: http://www.jianshu.com/p/03ce2a6915d6