Spring配置jdbc
<!--Spring整合jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.19.RELEASE</version>
</dependency>
<!--Mysql数据库连接包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
代码配置:
@Test
public void test2(){
DriverManagerDataSource dmd = new DriverManagerDataSource();
dmd.setDriverClassName("com.mysql.cj.jdbc.Driver");
dmd.setUrl("jdbc:mysql:///fresh_everyday");
dmd.setUsername("root");
dmd.setPassword("xu123456");
System.out.println(dmd);
JdbcTemplate jdt = new JdbcTemplate(dmd);
List<Map<String, Object>> list = jdt.queryForList("select * from users");
for(Map<String,Object> map:list){
for(String s:map.keySet()){
System.out.println("键:"+s+"\t值:"+map.get(s));
}
System.out.println();
}
}
bean配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///fresh_everyday"/>
<property name="username" value="root"/>
<property name="password" value="xu123456"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
@Test
public void test2(){
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
JdbcTemplate jdt = (JdbcTemplate) ac.getBean("jdbcTemplate");
List<Map<String, Object>> list = jdt.queryForList("select * from users");
for(Map<String,Object> map:list){
for(String s:map.keySet()){
System.out.println("键:"+s+"\t值:"+map.get(s));
}
System.out.println();
}
}
Spirng.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
Spring的基于AspectJ 的AOP开发
- AOP的开发中的相关术语:
Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.
Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint 进行拦截的定义.
Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下,Introduction可以在运行期为类动态地添加一些方法或Field.
Target(目标对象):代理的目标对象
Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程.
spring采用动态代理织入,而AspectJ 采用编译期织入和类装在期织入
Proxy (代理) : 一个类被AOP织入增强后,就产生一个结果代理类
Aspect(切面):是切入点和通知(引介)的结合
主要功能:日志记录、性能统计、安全控制、事务处理、异常处理
举例:
对于“雇员”这样一个业务实体进行封装,自然是OOP的任务,我们可以建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP 设计思想对“雇员”进行封装则无从谈起。
同样,对于“权限检查”这一动作片段进行划分,则是AOP的目标领域。
OOP面向名次领域,AOP面向动词领域。
总之AOP可以通过预编译方式和运行期动态代理实现在不修改源码的情况下,给程序动态同意添加功能的一项技术。