spring-boot 引入xml注入bean

本文介绍如何在 Spring Boot 应用中通过 XML 文件配置 Bean 的注入,并展示了具体的实现方式,包括定义 Bean 类、接口及 XML 配置文件等。

spring-boot 引入xml注入bean

配置
public class TestServiceImpl implements ITestService{
	@Override
	public void test() {
		System.out.println("TestServiceImpl.test()");
	}
}

接口

public interface ITestService {
	public void test();
}

application-bean.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/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd  
            http://www.springframework.org/schema/context  
            http://www.springframework.org/schema/context/spring-context.xsd  
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
	<!-- 测试引用xml -->
	<bean id="testService" class="com.maple.test.service.impl.TestServiceImpl"/>
</beans>

引入xml

@SpringBootApplication
@ServletComponentScan
@Import(value={SpringUtil.class})
@ComponentScan(basePackages={"com.maple.springboot","com.maple.testpackage"})
//引入xml配置
@ImportResource(locations={"classpath:config/application-bean.xml"})
@EnableConfigurationProperties({CustomSettings.class,MapleSettings.class})
public class App {
	
	public static void main(String[] args) {
		
		//配置banner
		SpringApplication application = new SpringApplication(App.class);
		application.setBannerMode(Banner.Mode.OFF);
		application.run(args);

	}
}

调用

@Resource(name="testService")
private ITestService testService;

转载于:https://my.oschina.net/u/159221/blog/1621988

### 三级标题:`spring-boot-starter-data-jdbc` 是否包含 `DialectResolver.JdbcDialect` `spring-boot-starter-data-jdbc` 是 Spring Boot 提供的用于支持 Spring Data JDBC 的模块,它封装了对关系型数据库的基本操作,并提供了对分页、方言等高级特性的支持。其中,`DialectResolver.JdbcDialect` 接口是用于定义特定数据库的 SQL 行为适配规则,例如分页语句的构造方式。 该接口确实存在于 `spring-boot-starter-data-jdbc` 所依赖的 `spring-data-jdbc` 模块中。因此,只要项目中正确引入了 `spring-boot-starter-data-jdbc`,即可使用 `DialectResolver.JdbcDialect` 类进行自定义数据库方言的实现[^1]。 以下是一个典型的依赖声明示例: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> ``` 引入该依赖后,可以通过实现 `DialectResolver.JdbcDialect` 接口来定义特定数据库的行为,例如达梦数据库的分页语法适配。 --- ### 自定义 JdbcDialect 示例 ```java import org.springframework.data.jdbc.repository.config.DialectResolver; public class DamengDialect extends DialectResolver.JdbcDialect { @Override public boolean supportsLimitOffset() { return true; } @Override public String getLimitSql(String sql, boolean hasOffset) { if (hasOffset) { return sql + " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY"; } else { return sql + " FETCH FIRST ? ROWS ONLY"; } } } ``` --- ### 注册 DialectResolver Bean ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jdbc.repository.config.DialectResolver; @Configuration public class DamengConfig { @Bean public DialectResolver.JdbcDialect damengDialect() { return new DamengDialect(); } @Bean public DialectResolver damengDialectResolver(DamengDialect damengDialect) { return new DialectResolver((url, databaseName) -> { if (url.startsWith("jdbc:dm:")) { return damengDialect; } return null; }); } } ``` --- ### 数据源配置 在 `application.properties` 中配置达梦数据库连接信息: ```properties spring.datasource.url=jdbc:dm://localhost:5236/your_database spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=dm.jdbc.driver.Driver ``` 确保达梦数据库的 JDBC 驱动已正确引入项目依赖管理中,以避免类加载失败或驱动找不到的问题。 --- ### 注意事项 - 若项目中仅引入了 `spring-boot-starter-jdbc`,则不会自动包含 `DialectResolver.JdbcDialect` 相关类。需要显式添加 `spring-boot-starter-data-jdbc` 依赖。 - 在使用 MyBatis Plus 或其他 ORM 框架时,若需利用 Spring Data JDBC 的分页功能,则必须手动注册 `JdbcDialect` 实现类。 - 确保达梦数据库驱动版本与 Spring Boot 兼容,否则可能导致连接失败或 SQL 语法不兼容问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值