首页
学习
活动
专区
圈层
工具
发布

Spring速查手册(三)——Spring+JDBC

Spring的数据访问异常体系 JDBC提供了SQLException异常,它是一个检查异常,必须要捕获。 但该异常过于笼统,只要是数据访问发生问题都抛出这个异常。...因此很难在抛出该异常后进行恢复,因此该异常就没有抛出的必要。 Spring对JDBC的异常进行了转换,并进行了扩充,使得异常更加具体化,能够根据异常来进行恢复。...- SqlMapClientTemplate //MyBatis的模板 配置数据源 Spring提供了三种数据源配置方案: 1....JNDI配置数据源就是将数据库的连接信息配置在Tomcat等Web容器中,这样数据库的连接信息完全可以在应用程序之外进行管理,当数据源发生变化时,就不需要修改程序代码。...使用JDBC驱动数据源 只需定义一个名为dataSource的bean即可,并配置好各项连接信息。 使用JDBC模板 Spring提供两种JDBC模板: 1.

1.2K60

Spring实战6-利用Spring和JDBC访问数据库主要内容

如果在数据访问层处理Hibernate框架抛出的专属异常,则会影响到应用中的其余模块;如果不这么做,你必须捕获该持久化的专属异常,然后重新抛出一个平台无关的异常。...Spring通过提供unchecked exception,让开发者决定是否需要捕获并处理某个异常。为了充分发挥Spring的数据访问异常,你最好使用Spring提供的数据访问模板。...在SpringXML配置文件中使用jndi-lookup>元素定义数据源对应的Spring bean。...在上述代码中,当development对应的profile被激活时,应用会使用嵌入式数据源;当qa对应的profile被激活时,应用会使用DBCP的BasicDataSource;当production...对应的profile被激活时,应用会使用从JNDI中获取的数据源。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring JDBC-Spring对事务管理的支持

    当需要脱离模板类,手工操作底层持久技术的原生API时,就需要通过这些工具类获取线程绑定的资源,而不应该直接从DataSource或SessionFactory中获取。...所以,如果Dao使用模板类进行持久化操作,这些Dao就可以配置成singleton。如果不使用模板类,也可直接通过资源获取工具类访问线程相关的资源。...PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。...当使用PROPAGATION_NESTED时,底层的数据源必须基于JDBC 3.0,并且实现者需要支持保存点事务机制。...假设UserService#addCredits ()设置为PROPAGATION_NEVER,当ForumService# addTopic()拥有一个事务时,addCredits()方法将抛出异常

    1.1K20

    @AutoWired和@Resource的区别

    @Resource: 这是Java EE 5的注解,由JSR-250规范定义,也被Spring框架支持,用于实现JNDI查找和自动装配。...如果没有明确指定名称,Spring将抛出异常。指定名字用的注解就是@Qualifier@Resource: 默认的注入顺序是按照Bean的名称进行匹配,如果找不到,则会按照类型进行匹配。...性能考虑: 在某些情况下,@Autowired可能需要更多的解析工作,特别是在没有明确指定Bean名称时,而@Resource则直接依赖于JNDI查找,可能在查找顺序上更直接。...使用@Resource可以提高代码的兼容性,特别是在需要与Java EE环境交互时。@Autowired如果找不到匹配的Bean,会抛出一个异常,除非它使用了optional=true参数。...避免异常:如果你希望在找不到匹配的资源时不抛出异常,而是将变量设置为null,@Resource提供了这样的行为。

    1.6K10

    Spring JDBC

    语句​​ l 预编译并执行SQL语句 l 遍历查询结果(如果需要的话) l ​​处理每一次遍历操作​​ l 处理抛出的任何异常 l 处理事务 l 关闭数据库连接 1.1 配置数据源 无论使用什么形式的Spring...当没有可用连接时,连接池等待应用释放连接的最大时间,超过该时间限制会抛出异常。默认-1,表示无限等待。应该设置合适的等待超时时间,如60000ms,避免因连接不够用,而导致请求被无限制挂起。...下面,让我们来学习如何在Tomcat中配置JNDI数据源,如何在Spring中使用JNDI数据源。 1. ​...在Spring 应用容器中配置JNDI数据源bean​ 利用Spring,我们可以像使用Bean一样配置一个数据源(保存在JNDI里)的引用,并且把它作为依赖,注入到其他需要使用数据源的bean里。...JdbcTemplate会捕获全部SQLException, 把通用的SQLException转化为Spring自定义的数据访问异常,然后重新抛出。

    80310

    Java异常宝典

    当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。 20、java.lang.IllegalStateException 违法的状态异常。...当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。 22、java.lang.InstantiationException 实例化异常。...当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。 23、java.lang.InterruptedException 被中止异常。...当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。...24、java.lang.NoSuchFieldException 属性不存在异常。当访问某个类的不存在的属性时抛出该异常。 25、java.lang.RuntimeException 运行时异常。

    1.7K10

    工作流引擎使用详解!工作流框架Activiti的详细配置以及安装和使用

    默认使用H2内存数据库,数据库表会在引擎启动时创建,关闭时删除.使用它时,不需要其他配置(除非使用job执行器或邮件功能) org.activiti.spring.SpringProcessEngineConfiguration...与db.properties相比,它也允许对连接进行更多的配置JNDI的使用 Activiti Explorer和Activiti Rest应用从db.properties转换为使用JNDI数据库配置:...db.properties文件JNDI的配置 JNDI数据库配置会因为使用的Servlet container不同而不同 Tomcat容器中的JNDI配置如下: JNDI资源配置在CATALINA_BASE...beans属性中声明的bean, 或者使用spring(未使用beans属性)中所有实现了监听器接口的spring-bean 使用监听器的class属性时,只会创建一个实例.监听器实现不会依赖成员变量,...是多线程安全的 当一个非法的事件类型用在events属性或throwEvent中时,流程定义发布时就会抛出异常(会导致部署失败) 如果class或delegateExecution由问题:类不存在,不存在的

    2.3K00

    深度探索Spring Context:框架式的Bean访问与企业级功能

    在Spring配置文件中,我们可以使用jndi-lookup>标签来查找JNDI资源,并将其注入到Bean中。这样,我们就可以在Spring应用中轻松地访问JNDI资源了。当Spring容器启动时,它会解析这个配置,并通过JNDI查找对应的资源。找到资源后,Spring容器会将其封装成一个Bean,并注入到需要使用它的地方。...对话者B:当Spring容器启动时,它会扫描所有带有@Scheduled注解的方法,并将它们注册为定时任务。...配置文件:我们需要合理地组织Spring配置文件,避免配置冗余和混乱。异常处理:我们需要对可能出现的异常进行妥善处理,以确保应用的稳定性和可靠性。...当Spring容器启动时,它会读取配置文件或注解信息,并通过反射机制来创建和配置Bean。然后,它会将这些Bean组装成一个对象图,并通过依赖注入的方式将它们关联起来。

    1K21

    分布式事务之Spring事务与JMS事务(二)

    PROPAGATION_MANDATORY 使用当前的事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。...当使用PROPAGATION_NESTED时,底层的数据源必须基于JDBC 3.0,并且实现者需要支持保存点事务机制。...ISOLATION_SERIALIZABLE级别时,如果外部没事务存在,则本身创建事务,,所以submitError方法抛出异常可以回滚 //def.setPropagationBehavior...(TransactionDefinition.PROPAGATION_NOT_SUPPORTED); ## 当使用PROPAGATION_REQUIRED级别时,如果外部没事务存在,则本身也不存在事务...外部(全局)事务 外部事务管理器提供事务管理 通过Spring事务接口,调用外部管理器 使用JNDI等方式获取外部事务管理器的实例 外部事务管理器一般由应用服务器提供、如JBoss等 JNDI(Java

    2.5K10

    工作流开源框架ACtiviti的详细配置以及安装和使用

    默认使用H2内存数据库,数据库表会在引擎启动时创建,关闭时删除.使用它时,不需要其他配置(除非使用job执行器或邮件功能) org.activiti.spring.SpringProcessEngineConfiguration...db.properties文件 JNDI的配置 JNDI数据库配置会因为使用的Servlet container不同而不同 Tomcat容器中的JNDI配置如下: JNDI资源配置在CATALINA_BASE...方法抛出异常时的行为 返回false,会忽略异常 返回true,异常不会忽略,继续向上传播,迅速导致当前命令失败 当事件是一个API调用的一部分时(或其他事务性操作,比如job执行), 事务就会回滚 当事件监听器中的行为不是业务性时...beans属性中声明的bean, 或者使用spring(未使用beans属性)中所有实现了监听器接口的spring-bean 使用监听器的class属性时,只会创建一个实例.监听器实现不会依赖成员变量,...是多线程安全的 当一个非法的事件类型用在events属性或throwEvent中时,流程定义发布时就会抛出异常(会导致部署失败) 如果class或delegateExecution由问题:类不存在,不存在的

    3.5K20

    EJB的资料辅导(5)

    在EJB组建中调用其他的EJB组件 可以借助于JNDI,查找到其他EJB组件,也可以借助于业务接口,调用EJB实例中的业务方法,也可以同国直接引用其他的需要的EJB组件的业务接口,但是需要使用标注。...@Remote @Local 这两个标注是标注商业接口的,分别是标注远程的和本地的商业接口的,如果不写那就默认为本地的。...用于有状态SessionBean的标注 @Remove(retainIfExctption="true|false") 是否在Bean的实例抛出异常之后是否保留着个实例,@Remove标注能够应用的有状态...当调用到应用了这一注释的方法时,EJB容器会将这个Bean的实例销毁或是保留, retainIfExctption属性置为true,则会在调用Bean的业务方法中出现异常则会保留这个Bean的实例,置为...@Resource(name="" ,type="") 注意在使用资源引用的时候,也需要在厂商的部署描述文件中对资源进行配置,也就是配置资源的类型和名字,以及JNDIname @EJB(name="",

    27410

    Spring声明式事务、编程式事务一文打尽

    例如,它们通常不需要导入Spring事务API或者其它Spring API。 尽管EJB容器默认行为是在事务发生系统异常(通常是运行时异常)时自动回滚,EJB CMT并不会在出现应用异常时自动回滚。...在默认配置中,Spring框架事务基础机构代码标记事务回滚只会在运行时异常、非检查异常时回滚。RuntimeException(Error实例默认会导致事务回滚)。...当不是transactionManager时则需要配置 mode mode proxy 默认模式(proxy)处理注解bean,使用Spring AOP框架代理。...这种非宽松模式还拒绝只读不匹配(即,试图参与只读外部范围的内部读写事务)。 当传播行为设置为 PROPAGATION_REQUIRED 时,就会为应用该设置的每个方法创建逻辑事务范围。...但是,当一个内部事务设置为仅仅回滚的标记时,外部事务并没有决定回滚本身,所以被内部事务触发回滚操作不是外部事务所期望的。一个相应的UnexpectedRollbackException异常会被抛出。

    1.8K00

    深入解析Spring Boot核心启动流程与上下文初始化:Environment的诞生与PropertySources加载顺序

    StandardServletEnvironment的创建时机 当Spring Boot应用启动时,在SpringApplication的构造方法中会通过deduceWebApplicationType.../config/*/ 常见误区解析 误区1:application.yml总是优先于application.properties 实际上,当两者同时存在时,Spring Boot会合并两者的配置,而不是简单的覆盖...配置加载过程中的异常处理 当配置加载出现问题时,Spring Boot会按照以下策略处理: 配置文件缺失:不会报错,视为正常情况 配置值类型不匹配:抛出ConversionFailedException...@ConfigurationProperties验证失败:抛出BindValidationException 必需的配置缺失:使用@Value(required=true)或@ConfigurationProperties...当需要构建自定义的健康检查指标时,准确理解Environment的初始化时机和生命周期,才能确保监控组件正确获取到所有必要的配置属性。

    1.1K10
    领券