博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中如何混用XML与Java装配方式
阅读量:4090 次
发布时间:2019-05-25

本文共 1827 字,大约阅读时间需要 6 分钟。

发表在

多种装配方式的混用

除了自动配置,Spring使用显式的Java配置或者XML配置也可以完成任何装配。通常情况下可能在一个Spring项目中同时使用自动配置和显式配置。

对于自动配置,它自动从整个容器上下文中查找合适的bean,这个bean是通过@Component之类的标准,可能来自Java配置或者XML配置。

我们先来了解一下Java配置吧。

Java配置

创建配置类

使用Java配置,通过创建一个专门用于Spring配置的类,然后通过@Configuration标注该类。这个类一般不包含业务代码,类似于一个配置文件。

package com.tianmaying.config;import org.springframework.context.annotation.Configuration;@Configurationpublic class BlogConfig {}

定义Bean

接下来就可以往配置类中添加定义Bean的Java代码了。

package com.tianmaying.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.tianmaying.dao.UserDao;import com.tianmaying.dao.UserDaoImpl;import com.tianmaying.service.UserService;@Configurationpublic class BlogConfig {    // 定义Spring Bean    @Bean    public UserService userService() {        UserService userService = new UserService();        userService.setUserDao(userDao()); //注入属性        return userService;    }    // 定义Spring Bean        @Bean    public UserDao userDao() {        return new UserDaoImpl();    }}

此时,我们可以将UserDaoUserService@Component标注删除,我们发现整个应用依然可以工作。

XML配置

接下来我们把PostDaoPostService@Component标注删除,通过XML的方式来将这两个类注册为Spring Bean。在src/main/resources下新建blogConfig.xml文件,添加以下内容:

<bean>元素类似于Java配置中的@Bean标注,用于定义个Spring Bean,<property>元素则用于定义依赖。

Java配置和XML配置可以相互引用,我们可以通过以下方式将XML配置引入到Java配置中:

@ImportResource("classpath:blogConfig.xml")@Configurationpublic class BlogConfig {}

Java配置与XML配置的混用

通过@Import注解也能导入其他的JavaConfig,并且支持同时导入多个配置文件:

@Configuration@Import({
BossConfig.class, EmployeeConfig.class})public class BossConfig {
}

通过标签导入Java配置文件到XML配置文件,例如:

当然,XML配置文件中,也可以引入其他的XML配置文件。通过标签即可引入:

小节

无论使用JavaConfig或者XML装配,一般都要创建一个根配置(Root Configuration),并且在这个配置文件中开启自动扫描机制:

  • XML配置文件使用<context:component-scan>
  • Java配置文件中使用@ComponentScan

更多文章请访问

你可能感兴趣的文章
小程序中时间比较的坑
查看>>
将本地项目推送到码云远程的基本步骤
查看>>
Eslint报错含义及解决方案汇总
查看>>
小程序中快速删除所有编译模式的方法
查看>>
微信小程序 弹出层 禁止页面滚动的方法
查看>>
蓝绿部署、滚动发布和灰度发布浅析
查看>>
什么是微前端架构?它有什么优缺点以及构建思路
查看>>
涨知识啦:css粘性定位position:sticky
查看>>
前端开发必知:组件封装的原则
查看>>
微信小程序采坑记录:http:XXX 不在以下request合法域名列表中的解决方法
查看>>
js数组去重小结
查看>>
javascript defer与async 的差异
查看>>
flex实现等宽布局且间隔相等的小技巧
查看>>
JS冷知识:label 语句记录循环语句中断的值
查看>>
软件架构必知-康威定律
查看>>
JS基础夯实——垃圾回收机制
查看>>
js基础夯实——基本类型与引用类型
查看>>
ubuntu19 安装python虚拟环境
查看>>
我的ubuntu19.04在执行一次全面升级后,导致不能进入桌面
查看>>
我在ubuntu19.01中 使用pip3安装 pgadmin4
查看>>