Spring中如何混用XML与Java装配方式

David发表在天码营

多种装配方式的混用

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

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

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

Java配置

创建配置类

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

package com.tianmaying.config;

import org.springframework.context.annotation.Configuration;

@Configuration
public 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;

@Configuration
public 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文件,添加以下内容:

<?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">

  <bean id="postService" class="com.tianmaying.service.PostService">
    <property name="postDao" ref="postDao"></property>
  </bean>

  <bean id="postDao" class="com.tianmaying.service.PostDao">
  </bean>

</beans>

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

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

@ImportResource("classpath:blogConfig.xml")
@Configuration
public class BlogConfig {

}

Java配置与XML配置的混用

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

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

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

<bean class="com.tianmaying.config.BlogConfig" />

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

<bean class="com.tianmaying.config.BossConfig" />

小节

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

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

更多文章请访问天码营网站

时间: 2024-10-05 02:01:17

Spring中如何混用XML与Java装配方式的相关文章

Spring中加载xml配置文件的六种方式

因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicati

Spring中的applicationContext.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" xmlns:context="http://www.springframework.org/sch

【转载】Spring中的applicationContext.xml与SpringMVC的xxx-servlet.xml的区别

一直搞不明白两者的区别. 如果使用了SpringMVC,事实上,bean的配置完全可以在xxx-servlet.xml中进行配置.为什么需要applicationContext.xml?一定必须? 一. 因为直接使用了SpringMVC,所以之前一直不明白xxx-servlet.xml和applicationContext.xml是如何区别的,其实如果直接使用SpringMVC是可以不添加applicationContext.xml文件的. 使用applicationContext.xml文件时

Spring中引用不同xml中的bean

想要在Spring-Common.xml中引用 Spring-Output.xml中定义的bean 需要使用<ref bean="XXX"/>标签,如果是同一个xml文件中引用则使用<ref local="XXX"/>标签. package com.spring.output; public class OutputHelper { IOutputGenerator outputGenerator; public void generateO

简单了解Spring中常用工具类_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口是为了统一各种类型不同的资源而定义的,Spring 提供了若干 Resource 接口的实现类,这些实现类可以轻松地加载不同类型的底层资源,并提供了获取文件名.URL 地址以及资源内容的操作方法 访问文件资源 * 通过 FileSystemResource 以文件系统绝对路径的

java server之spring中的IOC如何用java实现?

** 什么是IOC? 一般的对象耦合是在编译时确定的,也就是说当我们写如下类: public class StaticCoupling { String s = new String("hzg1981"); } 的时候,类StaticCoupling在编译期间就跟String类耦合在了一起. 在代码静态分析时,就可以确认它们之间的耦合. 而IOC 则是在运行期间才使用assembler object绑定需要耦合的对象.绑定过程是由依赖注入(DI)实现的.需要注意的是IOC和DI是有区别

Spring框架笔记(二十四)——Spring中的JDBC的两种使用方式

为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架. 作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低. 现在我们来介绍一下,各种CRUD可能用到的Spring JDBC的API: 使用 JdbcTemplate 更新数

spring中创建bean对象的三种方式以及作用范围

时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数函数,则对象无法创建. <bean id="one" class="sdnu.machi.one"></bean> 如果one.class中没有默认构造函数则会报

Spring中的applicationContext.xml与SpringMVC的xxx-servl

一直搞不明白两者的区别.如果使用了SpringMVC,事实上,bean的配置完全可以在xxx-servlet.xml中进行配置.为什么需要applicationContext.xml?一定必须? 一.因为直接使用了SpringMVC,所以之前一直不明白xxx-servlet.xml和applicationContext.xml是如何区别的,其实如果直接使用SpringMVC是可以不添加applicationContext.xml文件的.使用applicationContext.xml文件时是需要