Spring配置非自定义bean

Spring配置非自定义Bean:数据库连接示例
文章介绍了如何在Spring中配置非自定义Bean,以DruidDataSource为例设置数据库连接,并展示了如何通过factory-method创建数据库连接,包括设置driverClassName,url,username和password。

Spring配置非自定义Bean

首先需要在maven配置文件中先导入相应的库,然后在到xml文件中进行相应的配置。这里以mysql数据库的相应操作为例。

数据库相应信息

    <!-- 这里的class就是第三方jar包中的相应类,而property中的name需要根据实际类中的命名进行调整与修改 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean>

非自定义Bean-Connection

connection不同于上面创建dataSource通过new一个实例化对象进行创建,而是通过方法返回实现的。这里就需要运用到之前学习过的factory-name实现

<!-- 配置connection 在链接mysql之前需要把对应的引擎加载进来,所以才会有这个bean -->
<bean id="clazz" class="java.lang.Class" factory-method="forName">
    <constructor-arg name="className" value="com.mysql.jdbc.Driver" />
</bean>
<bean id="connection" class="java.sql.DriverManager" factory-method="getConnection" scope="prototype">
    <constructor-arg name="url" value="jdbc:mysql://localhost:3306/mybatis"></constructor-arg>
    <constructor-arg name="user" value="root"></constructor-arg>
    <constructor-arg name="password" value="root"></constructor-arg>
</bean>
Spring Cloud Feign 中,自定义 Bean配置通常涉及 Feign 的配置类,可以通过 `@FeignClient` 注解的 `configuration` 属性来指定自定义配置类。这种配置方式优先级高于默认的 `FeignClientsConfiguration`。通过自定义配置类,可以定义 Feign 的 Contract、Decoder、Encoder、Logger、ErrorDecoder 等组件。 ### 自定义 Feign 配置类 以下是一个典型的自定义 Feign 配置类的实现: ```java @Configuration public class FeignConfiguration { /** * 使用 Feign 的原生注解,替换默认的 Spring MVC 注解解析方式 */ @Bean public Contract feignContract() { return new feign.Contract.Default(); } /** * 自定义错误解码器,用于处理服务调用失败时的逻辑 */ @Bean public ErrorDecoder errorDecoder() { return new CustomFeignErrorDecoder(); } /** * 自定义日志记录器,启用 Feign 的详细日志输出 */ @Bean public Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } /** * 自定义解码器,用于处理响应数据的解析 */ @Bean public Decoder feignDecoder() { return new GsonDecoder(); } /** * 自定义编码器,用于处理请求数据的序列化 */ @Bean public Encoder feignEncoder() { return new GsonEncoder(); } } ``` ### 在 Feign 客户端中使用自定义配置 在 Feign 客户端接口中,通过 `@FeignClient` 注解指定自定义配置类: ```java @FeignClient(name = "service-provider", configuration = FeignConfiguration.class) public interface ServiceClient { @GetMapping("/api") String callApi(); } ``` ### 自定义 Feign 的 Header 在某些场景下,可能需要为 Feign 请求添加自定义的 Header。可以通过实现 `RequestInterceptor` 接口来实现: ```java @Component public class CustomFeignInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { template.header("X-Custom-Header", "CustomValue"); } } ``` 确保该拦截器被注册为 Spring Bean,以便 Feign 能够自动识别并应用它。 ### 自定义 Feign 的 Contract 默认情况下,Feign 使用 `SpringMvcContract` 来解析接口上的注解。如果希望使用 Feign 原生的注解方式,可以在配置类中定义 `Contract` Bean: ```java @Bean public Contract feignContract() { return new feign.Contract.Default(); } ``` 这将替换默认的 `SpringMvcContract`,允许使用 Feign 原生的注解方式定义接口。 ### 总结 通过自定义配置类,可以灵活地调整 Feign 的行为,包括注解解析方式、日志级别、错误处理、编解码器等。这些配置可以通过 `@FeignClient` 注解的 `configuration` 属性应用到特定的 Feign 客户端接口上,从而实现更精细化的控制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值