Spring知识点小结(二)
一、配置非自定义的Bean(数据源DataSource模型)
DBCP数据源:
导入dbcp的jar包:dbcp+pool+connector
代码实现:
//创建数据源对象
BasicDataSource dataSource = new BasicDataSource();
//设置数据库的基本参数
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///test");
dataSource.setUsername("****");
dataSource.setPassword("****");
//从数据源中获得连接资源
Connection connection = dataSource.getConnection();
//jdbc操作
System.out.println(connection);
C3P0数据源:
导入c3p0的jar包:c3p0+connector
代码实现:
//创建数据源对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//设置数据库的基本参数
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql:///test");
dataSource.setUser("****");
dataSource.setPassword("****");
//从数据源中获得连接资源
Connection connection = dataSource.getConnection();
//jdbc操作
System.out.println(connection);
在spring中配置数据源对象:
<!-- 将jdbc.properties文件加载到spring的容器中 需要用到context命名空间
classpath:类加载路径 开发环境下就是src
-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
二、Spring的注解开发
注解与xml配置文件的优缺点?
xml优点:解耦合 缺点:配置繁琐
注解优点:快 缺点:耦合
1、Spring原始注解
出现的目的主要是对自定义的Bean的xml配置的替代
1.1开发步骤:
1、导入额外jar:spring-aop.jar
2、在xml中开启组件扫描
<!-- 组件扫描:告知spring容器哪些包下的bean需要被扫描 -->
<context:component-scan base-package="com.cyxz"></context:component-scan>
3、在实体Bean上使用注解进行开发
@Component("customerDao")
public class CustomerDaoImpl implements CustomerDao
@Component("customerService")
public class CustomerServiceImpl implements CustomerService
@Autowired
private CustomerDao customerDao;
4、测试
1.2 注解的详解
IoC:创建对象
@Component(该Bean对象的标识/id):在需要被spring进行实例化Bean上,参数字符串可以不写,默认是当前类名的首字母小写
@Controller:控制器 使用web层的Bean上 例如Action
@Service:服务 使用service层的Bean 例如CustomerServiceImpl
@Repository: 仓库 使用dao层的Bean上 例如CustomerDaoImpl
DI:依赖注入,注解的注入可以省略set方法
@Autowired:自动按照实体的类型进行注入
@Qualifier("customerDao") //此处@Qualifier是按照名称匹配 但是在此处@Qualifier结合@Autowired一起使用
@Resource(name="customerDao") //@Resource=@Autowired+@Qualifier
@Value(值)
其他:
@Scope:配置bean的作用范围,取值singleton(默认)和prototype 注解配置默认是prototype,xml配置默认是singleton
@PostConstruct:指定初始化方法 //在构造之后执行
PreDestroy:指定销毁方法 //在销毁之前执行
注意;重点注解:@Controller、@Service、@Repository、@Autowired、@Scope
注意:开发准则:Bean是自定义那么使用注解配置、Bean是非自定义的那么使用xml配置
2、Spring新注解(次重点)
Spring的新注解出现的目的完全替代xml配置文件
使用配置类 替代 xml文件
使用注解 替代 标签
@Configuration //标注该类是一个spring的配置类
@ComponentScan("com.cyxz") //组件扫描
@Import({DataSourceConfiguration.class}) //引入其他的配置类
@PropertySource({"classpath:jdbc.properties"}) //加载jdbc.properties文件
@Value("${jdbc.driver}") //匹配spring容器中的key
@Bean(name="dataSource") //将该方法的返回值以指定的名称存储到spring容器中
三、Spring集成Junit
原有的测试类:
@Test
//测试从spring中获得Service实例对象
public void test1() throws Exception{
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService customerService = (CustomerService) app.getBean("customerService");
customerService.save();
}
spring集成junit:
开发步骤:
1、导入额外的jar
spring-test.jar
spring-aop.jar
junit.jar
2、通过注解的形式指定测试类 和 配置文件
执行测试类:@RunWith(SpringJUnit4ClassRunner.class)
指定配置文件(类):@ContextConfiguration("classpath:applicationContext.xml")
3、测试spring容器中的哪个对象就通过注解注入哪个对象
4、编写测试方法
代码实现:
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml") //加载配置文件
@ContextConfiguration(classes={SpringConfiguration.class}) //加载配置类
public class SpringJunitTest {
@Autowired
private CustomerDao customerDao;
@Autowired
private CustomerService customerService;
@Test
public void test1(){
customerDao.save();
}
@Test
public void test2(){
customerService.save();
}
}
Spring知识点小结(二)的更多相关文章
- Spring知识点小结(四)
一.JdbcTemplate(jdbc模版--抽取的工具) web阶段DBUtils: QueryRunner runner = new QueryRunner(dataSource); ...
- Spring知识点小结(三)
一.aop的简介 aop:面向切面编程 aop是一种思想,面向切面编程思想,Spring内部提供了组件对aop进行实现 aop是在运行期间使用动态代理技术实现的思想 aop是oop延 ...
- Spring知识点小结(一)
一.Spring的简介 1.spring是一个full-stack轻量级开源框架 2.spring的两大核心 IoC: inverse of control 控制反转:反转是对象 ...
- Spring知识点小结汇总
Spring部分 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建UserService对象的控 ...
- Spring知识点总结(二)之Spring IOC
1.创建bean类,并在spring中进行配置交由spring来管理1. IOC(DI) - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管 ...
- Hibernate知识点小结(二)
一.持久化对象和标识符 1.持久化类 配置完关系后,操作的实体对应的类,成为持久化类 (Customer) 2.持久化类标识符(oid:object id) 3.持久 ...
- Struts2知识点小结(二)
一.结果视图的配置 <result name="success">/success.jsp</result> 1.局部结果视图 ...
- SpringBoot 系列教程之事务隔离级别知识点小结
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...
- disruptor笔记之四:事件消费知识点小结
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- Django 模型层之多表操作
一.创建模型 实例: 作者表: 拥有字段:姓名(name),性别(sex),该表与书籍表之间为多对多的关系 作者详情表: 拥有字段:地址(addr),手机号(phone),该表与作者表之间为一对一的关 ...
- nodejs项目windows下开机自启动
Nodejs项目开机自启动 1. 在需要自启动的项目中安装 node-windows 模块 npm install node-windows --save 2. 在项目根目录创建nw.js文件 代码截 ...
- 用opencv做的静态图片人脸识别
这次给大家分享一个图像识别方面的小项目,主要功能是识别图像中的人脸并根据人脸在图片库找出同一个与它最相似的图片,也就是辨别不同的人. 环境:VS2013+opencv2.4.13 主要是算法:open ...
- C++程序运行时间-ZZ
[15.5.25]贴一段实用的代码,linux下跑过. #include <stdio.h> /* printf */ #include <time.h> /* clock_t ...
- Oracle案例06—— OGG-01098 Could not flush "./dirdat/e1000004383" (error 28, No space left on device)
一.前言 自从换了新环境,各种问题层出不穷,如果不是之前积累的经验丰富,估计都歇菜了,看来作为数据库全栈工程师(oracle/mysql/sqlserver/sap hana/pg/mongodb/r ...
- Hyper-V复制
Hyper-V复制: 默认HV01上的所有虚机都被复制到HV02的 Hyper-V Replica 目录下.虚机启用复制后,当需要启用虚机副本时,要先在HV01上把原虚机关机,然后在HV02上选择故障 ...
- 错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息
错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息 查看错误得知是安装sqlexpr_x64.exe的时候出现了错误 解决: 通过打开skype镜像,找到sql ...
- 用QT写一个对话框
打开QT creater创建取名去findDialog的项目,这个项目要基于QDialog.直接上FindDialog.h的头文件. #ifndef FINDDIALOG_H #define FIND ...
- 使用BAPISDORDER_GETDETAILEDLIST创建S/4HANA的Outbound Delivery
要在S/4HANA里创建Outbound Delivery,首先要具有一个销售订单,ID为376,通过事务码VA03查看. 只用61行代码就能实现基于这个Sales Order去创建对应的outbou ...
- linux-记录
查看运行的进程 ps -aux|grep java 找到要删除的进程的编号 杀死进程 kill -9 1883(进程编号) 重启服务 sh satrtBussinessService.sh