`

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,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值。


分享到:
评论

相关推荐

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

    采用springmvc+jdbctemplate+mysql注解方式搭建,中小型项目首选!包含mysql数据库.

    Spring 3.0MVC JDBC 单表操作示例.rar

    eclipse 直接导出的项目 Spring MVC 的一个DEMO jiaolongzhi作品 ... DAO 层采用2种方法连接proxool连接池。一种是 Spring 封装的JDBC和 操作 (teacher表) 一种是 proxool 提供的方式(student表)

    整合Mybatis和Spring框架进行注解开发SSM框架的学习与应用-Java EE企业级应用开发学习记录(第十天)

    2. 注解开发: 我们将深入讨论如何使用注解来配置和管理Spring容器、控制器、服务层和数据访问层。注解开发可以显著简化配置,并提高代码的可读性。 3. 整合配置: 我们将演示如何将Spring、Spring MVC和MyBatis进行...

    Spring Boot项目application.yml文件数据库配置密码加密

    在Spring boot开发中,需要在application.yml文件里配置数据库的连接信息,或者在启动时传入数据库密码,如果不加密,传明文,数据库就直接暴露了,相当于”裸奔”了,因此需要进行加密处理才行。  使用@SpringBoot...

    Kotlin版本微服务框架参考(亲手搭建 修改Redis及数据库配置可启动)

    DataSourceDefine:定义数据源,与Yml中数据源配置对应,yml中默认配置了两个数据源 master/slave,如果要新增数据源,可以按照slave配置增加一个数据源配置,如:slave2,并在DataSourceDefine中和slave一样增加已断...

    Java课程设计&毕业设计-基于SpringBoot+MybatisPlus的博客系统(数据库+源码).zip

    你可以使用Spring Boot的配置注解来方便地配置这些信息。 4. 创建实体类和数据访问对象(DAO):根据数据库设计,创建对应的实体类和DAO类。你可以使用Mybatis Plus提供的注解和API来简化数据库操作。 5. 创建服务...

    spring-boot mybaits spring security redis整合

    Druid数据库连接池,监控数据库访问性能,详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 数据库密码加密。 2、持久层 ====== mybatis持久化,PageHelper分页。Transtraction注解Jta事务。 3、...

    Spring.3.x企业应用开发实战(完整版).part2

    4.10.2 使用注解配置信息启动Spring容器 4.10.3 自动装配Bean 4.10.4 Bean作用范围及生命过程方法 4.11 基于Java类的配置 4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 ...

    Java课程实验 Spring Boot 分别整合 MyBatis、JPA

    在 application.properties(或 application.yml)中配置MySQL数据库连接信息 3.创建实体类和Mapper接口: 创建实体类,表示数据库表的映射对象。 创建Mapper接口,使用注解或XML配置SQL语句和数据库操作。 4.扫描...

    spring boot2.0以上版本整合mybatis+pagehelper+druid

    2)配置数据库连接、配置 Spring 事务 3)配置加载配置文件的读取,开启注解 4)配置日志文件 … n) 配置完成之后部署 tomcat 调试 可能你还需要考虑各个版本的兼容性,jar 包冲突的各种可行性。 那么使用 ...

    使用MyEclipse创建Spring Boot项目demo

    2)配置数据库连接、配置 Spring 事务 3)配置加载配置文件的读取,开启注解 4)配置日志文件 … n) 配置完成之后部署 tomcat 调试 可能你还需要考虑各个版本的兼容性,jar 包冲突的各种可行性。 那么使用 ...

    Spring3.x企业应用开发实战(完整版) part1

    4.10.2 使用注解配置信息启动Spring容器 4.10.3 自动装配Bean 4.10.4 Bean作用范围及生命过程方法 4.11 基于Java类的配置 4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 ...

    Spring中文帮助文档

    2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut ...

    Spring API

    2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.3. 控制数据库连接 11.3.1. DataSourceUtils类 11.3.2. SmartDataSource接口 11.3.3. AbstractDataSource类 11.3.4. SingleConnectionDataSource类 11.3.5. DriverManagerDataSource类 11.3.6. ...

    Spring 2.0 开发参考手册

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    spring-boot mybaits shiro redis整合

    Druid数据库连接池,监控数据库访问性能,详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 数据库密码加密。 2、持久层 ====== mybatis持久化,PageHelper分页。Transtraction注解Jta事务。 3、...

    Spring.html

    default:使用数据库默认的隔离级别(mysql:可重复读,oracle:读已提交) readuncommited:读未提交,不可以解决任何问题 readcommited:读已提交,可以解决脏读问题 repeatableRead:可重复读,可以解决脏读,不可重复...

    springjdbc

    -- 数据库配置 --&gt; &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p=...

    Spring攻略(第二版 中文高清版).part1

    1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...

Global site tag (gtag.js) - Google Analytics