`

Spring连接数据库的配置与注解

 
阅读更多
想说一下spring连接数据库,dao层可以有两种方式比较简单。
1.dao继承jdbcDaoSuport,这时需要配置文件中加入一行(将dataSource放入dao中),代码中直接调用gettemplet(),就可以与数据库交互。
2.dao继承jdbcTemplet,这时用注解最简单,只要在dao里将dataSource注解上@resourse.就可以高枕了。配置文件中不用1中的步骤就可以。代码里直接用templet中的方法就与数据库交互了。

上面的年前自己测过,但是没总结,现在用到又得重新搞,可见总结多么重要。
下面,说下要知道的常识:
applicationContext.xml 里,大致示例如下:


<beans> 
<bean name="ds" class="org.apache.commons.dbcp.BasicDataSource"> 
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
<property name="url" value="jdbc:oracle:thin:@localhost:1521:wangbin"/> 
<property name="username" value="tech37"/> 
<property name="password" value="tech37"/> 
</bean> 
  
<bean name="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
<property name="dataSource" ref="ds"/> 
</bean> 
<tx:advice id="txAdvice" transaction-manager="txManager"> 
<tx:attributes> 
<tx:method name="get*" read-only="true"/> 
<tx:method name="*"/> 
</tx:attributes> 
</tx:advice> 
  
<aop:config> 
<aop:advisor advice-ref="txAdvice" 
pointcut="execution(* cn.javass..business.ebo.*Ebo.*(..))"/> 
</aop:config> 
</beans> 



在上面的示例中,我们可以典型的看到Spring的三种功能:
1、IoC容器,如:
<bean …>
<property…/>
</bean>
2、AOP
<aop:config/>
3、事务
<tx:advice/>
首先我们学习如何使用注解来构造IoC容器。
用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册<context:component-scan base-package=“cn.javass”/>。表明cn.javass包及其子包中,如果某个类的头上带有特定的注解【@Component/@Repository/@Service/@Controller】,就会将这个对象作为Bean注册进Spring容器。
以上的4个注解,用法完全一摸一样,只有语义上的区别。
@Component 是所有受Spring 管理组件的通用形式,Spring 还提供了更加细化的注解形式:  @Repository 、@Service 、@Controller ,它们分别对应数据层Bean ,业务层Bean ,和表现层Bean 。
其中,@Component不推荐使用。
这四个注解都可以放在类的头上,如果不指定其value【@Service】,则默认的bean名字为这个类的简单类名首字母小写;如果指定value【@Service(“dao”)】,则使用value作为ban名字。
注意:如果cn.javass.SampleDao和cn.javass1.SampleDao都只用@Service注解,而不指定value会发生什么事?
除了注册Bean之外,还可以通过在<bean>上设置属性来控制Bean的其他属性,比如:
<bean name="" class=""
lazy-init=“true”  //是否延迟初始化
scope=“prototype”  //bean的生命周期
depends-on=“其他bean“ //依赖其他bean
/>
在Spring中也有相应的注解去对应
@Lazy
@Scope
@DependsOn
他们都是放在类的头上。
除了注册Bean之外,还可以通过在<bean>上设置属性来控制Bean的初始化方法和析构方法,比如:
<bean name="" class=""
init-method=“init“ //初始化方法
destroy-method=“close“ //析构方法
/>
在Spring中也有相应的Bean去对应,当然,这两个注解是jdk里内置的
@PostConstruct
@PreDestroy
这两个注解放在方法头上。
@Autowired 根据bean 类型从spring 上下文中进行查找。我们需要从以下几方面来学习这个注解:
1、它都能放在什么头上?
它可以放在属性、方法和构造方法头上。
2、根据什么注入?
2.1、如果某个接口的实现类在Spring容器中唯一的话,仅使用@Autowired就可以正确注入,如:
@Autowired
private SampleDao dao;
2.2、如果某个接口的实现类在Spring容器中不唯一
2.2.1、用@Qualifier来指定注入Bean的名字,如
@Autowired
@Qualifier(“sampleDaoImpl”)
private SampleDao dao;
2.2.2、用@Primary在多个Bean之中指定哪个为最优先者,注意它不是跟@Autowired配合使用,而是跟@Service配合使用,如
@Service @Primary SampleDaoImpl
2.2.3、用属性名、方法参数名、构造方法参数名来设置注入哪个 Bean,如
public class SampleDaoImpl implements SampleDao
public class SampleDaoImpl1 implements SampleDao
对应
@Autowired
private SampleDao sampleDaoImpl;
注意:属性名在编译后是一定存在的;但是方法参数名和构造方法参数名必须指定相应的编译选项才能保留。
3、@Autowired只有一个选项, boolean required() default true;是否必须,且默认为true。因此,如果仅仅使用@Autowired,就必须要能注入,否则会报错。

@Resource拥有和@Autowired类似的作用。
Spring还支持使用@Configuration,把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。

java代码:
查看复制到剪贴板打印
@Configuration("ctx")
public class JavaApplicationContext {
@Bean
public String hello(){
return "hello";
}
@Bean
public int max(){
return 9;
}
}
使用AnnotationConfigApplicationContext获得Spring容器
ApplicationContext context = new AnnotationConfigApplicationContext(JavaApplicationContext.class);
使用@ImportResource (“classpath:applicationContext.xml”)可以把其他容器导入到这个容器中。
Spring使用的AOP注解分为三个层次:
1、@Aspect放在类头上,把这个类作为一个切面,但是这个类一定要显式的注册在Spring容器中。
2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。
3、5种通知。 www.2cto.com
3.1、@Before,前置通知,放在方法头上。
3.2、@After,后置【finally】通知,放在方法头上。
3.3、@AfterReturning,后置【try】通知,放在方法头上,使用returning来引用方法返回值。
3.4、@AfterThrowing,后置【catch】通知,放在方法头上,使用throwing来引用抛出的异常。
3.5、@Around,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值。


分享到:
评论

相关推荐

    spring连接数据库实例

    总结来说,这个"spring连接数据库实例"主要涵盖了Spring框架中`DataSource`的配置、`JdbcTemplate`的使用以及事务管理的实现。通过这些知识点,我们可以高效地在Spring应用中实现与数据库的交互,提高开发效率。在...

    初学SpringCloud连接Oracle数据库

    在初学SpringCloud的过程中,与Oracle数据库的连接是构建分布式系统的一个重要环节。SpringCloud作为一个微服务框架,提供了丰富的服务治理功能,而数据库作为数据存储的核心,与SpringBoot的集成使得我们可以轻松...

    spring多数据库

    在多数据库切换查询中,`@Profile`注解可以帮助我们在不同环境(如开发、测试、生产)之间切换数据库配置。例如,你可以为每个环境创建一个配置类,并用`@Profile("dev")`、`@Profile("test")`和`@Profile("prod")`...

    springmvc+jdbctemplate+mysql(采用注解方式)

    5. **配置数据源**:在Spring配置中添加DataSource bean,连接MySQL数据库。 6. **创建模型**:定义Java实体类,使用JPA注解(如`@Entity`、`@Table`等)描述数据库表结构。 7. **编写DAO**:使用JdbcTemplate或JPA...

    spring连接数据库aop-jdbc

    在"spring连接数据库aop-jdbc"这个主题中,我们主要关注Spring框架如何通过AOP(面向切面编程)和JDBC(Java Database Connectivity)来实现数据库的高效管理。以下是关于这一主题的详细知识: 1. **Spring JDBC...

    Spring mysql数据库的配置与链接

    本篇将详细讲解如何配置Spring与MySQL数据库进行连接,以及如何利用SimpleJdbcTemplate进行数据操作。首先,我们需要理解Spring的JDBC支持,它提供了一种简单而强大的方式来处理数据库交互。 1. **Spring与MySQL的...

    spring-jdbc文件数据库配置加密

    通过上述方法,我们可以确保Spring JDBC在连接数据库时使用的配置信息得到充分保护,从而提高应用的安全性。在开发过程中,结合源码理解和使用适当的工具,可以更有效地实现这一目标。对于更深入的学习,可以参考...

    spring boot连接数据库(jpa)

    在本文中,我们将深入探讨如何使用Spring Boot框架与MySQL数据库进行集成,主要通过Java Persistence API (JPA) 来实现数据的增删改查操作。首先,我们需要理解Spring Boot的核心特性,它简化了传统Spring应用的初始...

    Spring框架xml注解配置方式实例

    7. **XML配置中的bean定义**:尽管大部分配置可以通过注解完成,但在某些情况下,我们仍需在XML文件中声明bean,例如,当需要自定义初始化方法、配置特定的bean属性,或者处理非Java组件(如数据库连接池)时。...

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    这样,当需要更新数据库配置时,只需更改Config Server上的配置,服务端会自动感知变化并重新加载。 4. **Ribbon和Feign客户端**:在Spring Cloud中,Ribbon和Feign常用于服务间的负载均衡。如果各个服务连接不同的...

    springboot通过数据库动态连接多数据库

    在Spring Boot应用中,动态连接多数据库是一种常见的需求,尤其在构建分布式系统或者需要支持多种数据源的场景下。Spring Boot以其简洁的配置和强大的自动配置能力,使得处理这种复杂性变得相对简单。本篇文章将深入...

    Struts2 Spring3.0 Hibernate3.3 整合全注解配置用的数据库

    在整合中,我们需要在Hibernate的配置中指定这些文件的位置,以便连接和操作数据库。 总结来说,Struts2、Spring3.0和Hibernate3.3的全注解配置简化了代码,提高了可读性和可维护性。通过注解,我们可以快速地定义...

    连接池与Spring,Hibernate结合

    "连接池与Spring、Hibernate结合"这个主题涉及到的是如何有效地管理和复用数据库连接,以提高应用程序的效率和响应速度。这里我们将深入探讨连接池的概念,Spring框架中的数据源配置,以及Hibernate的集成,以及它们...

    ssm框架应用连接数据库

    综上所述,"ssm框架应用连接数据库"涉及到的核心知识点包括:Spring的IoC和AOP,数据源配置,MyBatis的SqlSessionFactoryBean,Mapper接口和XML配置,以及Service层的业务逻辑处理。这些内容构成了Java Web应用开发...

    springmvc+spring+mybatis增删改查直接部署修改数据库配置即可运行

    MyBatis是一个持久层框架,它允许开发者将SQL语句与Java代码分离,通过XML或注解的方式配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。在SSM项目中,...

    springMVC配置连接数据库实现登录功能的一个小demo

    在这个"springMVC配置连接数据库实现登录功能的小demo"中,我们将探讨如何使用Spring MVC与Hibernate集成来处理用户登录功能。Hibernate是一个流行的ORM(对象关系映射)框架,它简化了与数据库的交互。 首先,我们...

    spring+hibernate和spring+myBatis实现连接多个数据库,同时操作的项目

    在Spring中,我们可以配置多个DataSource bean,每个bean对应一个数据库连接。Spring的AbstractRoutingDataSource类可以用来实现动态数据源切换,它可以根据一定的规则(如事务上下文、请求参数等)选择使用哪个数据...

    非注解Springmvc+spring+hibernate 入门实例

    在非注解方式下,你需要配置Hibernate的`hibernate.cfg.xml`文件,设置数据库连接参数,并在实体类上使用JPA的`@Entity`注解。此外,还需要创建`SessionFactory`,它是Hibernate的主要工作单元,负责创建`Session`...

    Spring全注解project示例 (无web.xml配置)

    通过查看这些代码,我们可以学习如何在没有web.xml的情况下,使用注解来配置Spring MVC、数据库连接、事务管理等。 5. **工具使用**:创建和运行这样的项目,开发者通常会用到Maven或Gradle作为构建工具,它们负责...

    Spring Boot高级教程之Spring Boot连接MySql数据库

    Spring Boot高级教程之Spring Boot连接MySql数据库 Spring Boot是一款基于Java的开源框架,旨在简化Spring应用...使用Spring Boot的自动配置功能,我们可以轻松地连接MySql数据库,提高开发效率和数据存储的安全性。

Global site tag (gtag.js) - Google Analytics