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/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="cn.springmvc" /> <bean id="masterdataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/myoa?useUnicode=true&characterEncoding=UTF-8"> </property> <property name="username" value="root"></property> <property name="password" value="system"></property> </bean> <bean id="slavedataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://localhost:3306/myoa2?useUnicode=true&characterEncoding=UTF-8"> </property> <property name="username" value="root"></property> <property name="password" value="system"></property> </bean> <bean id="dataSource" class="cn.springmvc.rw.DataSourceSwitch"> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry key="master" value-ref="masterdataSource" /> <entry key="slave" value-ref="slavedataSource" /> </map> </property> <property name="defaultTargetDataSource" ref="masterdataSource" /> </bean> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <bean id="manyDataSourceAspect" class="cn.springmvc.rw.DataSourceAspect" /> <aop:config> <aop:aspect id="c" ref="manyDataSourceAspect"> <aop:pointcut id="tx" expression="execution(* cn.springmvc.dao.*.*(..))" /> <aop:before pointcut-ref="tx" method="before" /> </aop:aspect> </aop:config> <!-- mybatis文件配置,扫描所有mapper文件 configLocation为mybatis属性 mapperLocations为所有mapper--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource" p:configLocation="classpath:mybatis-config.xml" p:mapperLocations="classpath:mapper/*.xml" /> <!-- spring与mybatis整合配置,扫描所有dao --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="cn.springmvc.dao" p:sqlSessionFactoryBeanName="sqlSessionFactory" /> <!-- 对数据源进行事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /> </beans>
package cn.springmvc.rw; public class DataSourceUtil { public static final ThreadLocal<String> holder = new ThreadLocal<String>(); public static void putDataSource(String name) { holder.set(name); } public static String getDataSouce() { return holder.get(); } }
package cn.springmvc.rw; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class DataSourceSwitch extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { System.out.println("============"+DataSourceUtil.getDataSouce()); return DataSourceUtil.getDataSouce(); } }
package cn.springmvc.rw; import org.aspectj.lang.JoinPoint; public class DataSourceAspect { public void before(JoinPoint point) { String method = point.getSignature().getName(); System.out.println("拦截的方法名为"+method); if (method.startsWith("save")||method.startsWith("update")||method.startsWith("delete")) { DataSourceUtil.putDataSource("master"); }else{ DataSourceUtil.putDataSource("slave"); } } }
package cn.springmvc.test; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.springmvc.model.User; import cn.springmvc.service.UserService; public class UserTest { private UserService userService; @Before public void before() { @SuppressWarnings("resource") ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "classpath:conf/applicationContext.xml", "classpath:mybatis-config.xml" }); userService = (UserService) context.getBean("userService"); } @Test public void addUser() { User user = new User(); user.setNickname("你好"); user.setState(2); System.out.println(userService.insertUser(user)); } }
package cn.springmvc.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.springmvc.dao.UserDAO; import cn.springmvc.model.User; @Service public class UserService { @Autowired private UserDAO userDAO; public int insertUser(User user) { return userDAO.insertUser(user); } }
package cn.springmvc.model; /** * 用户表 */ public class User { private int id; private int state; private String nickname; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getState() { return state; } public void setState(int state) { this.state = state; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } }
package cn.springmvc.dao; import cn.springmvc.model.User; public interface UserDAO { /** * 添加新用户 * @param user * @return */ public int insertUser(User user); }
相关推荐
在`quartz.properties`文件中,配置数据库连接参数和存储策略: ```properties org.quartz.scheduler.instanceName = MyScheduler org.quartz.dataSource.myDS.jndiURL = jndi://myDataSource org.quartz.jobStore....
这样,当Quartz启动时,它会从数据库中读取所有作业和触发器,而不是覆盖现有的任务。 3. **动态增删改查**:为了实现动态的定时任务管理,我们需要创建一个服务层,该层负责与数据库交互,进行CRUD操作。例如,...
数据库读取 Spring Batch 提供了多种 `ItemReader` 实现,如 JdbcPagingItemReader 和 JdbcCursorItemReader,用于从数据库中读取数据。JdbcPagingItemReader 适用于按页读取数据,而 JdbcCursorItemReader 则是...
本篇文章将详细讲解如何在Spring配置文件中注册三种不同类型的数据库数据源,并从属性文件中读取数据库连接的四个关键要素:URL、用户名、密码和驱动类名。 一、单数据源配置 首先,我们来看最基本的单数据源配置...
在本教程中,我们将探讨如何使用 Spring Batch 读取文本(txt)文件,并将读取到的数据处理后写入数据库。 首先,我们需要创建一个 Maven 项目,并在 `pom.xml` 文件中添加必要的依赖。这些依赖包括 `spring-boot-...
spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat
spring-boot 2.0.2.RELEASE,将定时任务配置在数据库,启动项目的时候,用mybatis读取数据库,实例化对象,并设定定时任务。如果需要新增,减少,修改定时任务,仅需要修改数据库资料,并重启项目即可,无需改代码。...
在Spring Boot应用中,我们可以利用其强大的自动化配置和Spring Task模块来实现基于数据库配置的定时任务。Spring Task是Spring框架的一部分,它提供了丰富的定时和调度功能,使得在Java应用中执行周期性任务变得...
为了从数据库读取数据并以JSON格式返回,我们可能会有以下步骤: 1. 配置Spring的数据库连接,通常在`applicationContext.xml`或`application.properties`中设置数据源。 2. 创建一个服务类(Service),使用Spring...
2. **DataSource**:Spring-Batch通过DataSource与数据库进行交互,配置数据库连接信息。 3. **JdbcPagingItemReader和JdbcBatchItemWriter**:这两个类分别用于分页读取数据和批量写入数据,是Spring-Batch与...
总之,这个demo提供了Spring MVC和Spring Data JPA环境下多数据库动态切换的完整实现,包括数据源配置、动态数据源的创建、以及如何在业务代码中进行切换。通过学习和实践这个示例,你可以更好地理解和掌握如何在...
要连接MySQL,我们需要在应用程序中配置数据库连接参数,如主机名、端口号、用户名、密码和数据库名。例如,使用Java的JDBC连接: ```java String url = "jdbc:mysql://localhost:3306/dbname"; String user = ...
SSH 配置多个数据库 ...在本文中,我们介绍了如何使用 Spring 和 Hibernate 配置多个数据库,实现动态切换数据库。这种方法可以提高系统的灵活性和可扩展性,减少系统的耦合度,提高了系统的可维护性。
在IT行业中,数据库读写分离是一种常见的优化策略,主要用于提高系统的并发处理能力和数据读取效率。Spring AOP(面向切面编程)与MyBatis框架的结合应用,可以帮助我们实现这一目标。以下将详细讲解如何利用Spring ...
在Spring框架中,读取`properties`配置文件是常见的任务,用于管理应用程序的配置信息,如数据库连接字符串、服务端口、系统环境变量等。本文将深入探讨如何在Spring项目中实现这一功能。 首先,我们需要一个`...
本文将深入探讨如何在Java环境中,利用TE网络技术实现Spring配置文件的加密。 首先,我们需要理解Spring配置文件的基本结构。Spring的配置文件通常为XML格式,如`applicationContext.xml`,它包含了bean的定义、...
综上所述,实现“Spring Cloud Oauth2的密码模式数据库方式实现登录授权验证”涉及多个步骤,包括设置Authorization Server和Resource Server,配置数据库,实现用户认证逻辑,以及处理令牌的生成与管理。...
Spring MVC 读取 XML 文件数据库配置参数的方法 在 Spring MVC 框架中,配置参数的管理是一个非常重要的方面。如何将数据库配置参数存储在 XML 文件中,并在项目中读取它们,是一个棘手的问题。本文将为大家介绍...
在本项目中,我们主要探讨如何使用Spring框架与Ajax技术结合,从数据库中获取数据,然后利用ECharts库将这些数据以条形图的形式展示出来。以下是对各个知识点的详细说明: 1. **Spring框架**:Spring是一个开源的...