- 本文参考文档:《Spring5第二天.pdf》
- 本文代码项目:spring_day02_01_anno_ioc、spring_day02_account_xmlioc、spring_day02_account_annoioc、spring_day02_account_annoioc_withoutxml(路径:G:\idea_java_project\)
- 本文大部分内容参考上面项目的代码!!!
今日内容
1、spring中ioc的常用注解
2. 案例:使用xml方式和注解方式实现单表的CRUD操作
1)持久层技术选择:dbutils
3. 改造基于注解的ioc案例,使用纯注解的方式实现
1) spring的一些新注解使用
4. spring和Junit整合
1、基于注解的 IOC 配置
学习基于注解的 IOC 配置,大家脑海里首先得有一个认知,即注解配置和 xml 配置要实现的功能都是一样的,都是要降低程序间的耦合,只是配置的形式不一样。
XML的配置是单独添加一个配置文件(如前面的bean.xml),在类中使用spring的核心容器ApplicationContext读取配置文件的内容,通过getBean(类标志) 方法获取想要创建的对象,并同时在bean.xml中实现依赖注入。而注解是通过在类中添加一些注解,来实现XML相应的功能。
参考项目:spring_day02_01_anno_ioc。首先,可以根据之前XML中标签的各个功能,将注解分为4类,如下:(具体代码参考项目,项目说的比较清楚)
//算了,太长几百行注释,不贴了,直接看项目代码以及注释即可!
关于@Autowired注解的说明
2、XMLIOC的案例以及相关的新注解介绍
使用XML来实现案例
主要参考项目:spring_day02_account_xmlioc项目
具体参考项目:spring_day02_account_xmlioc。这个项目需要导入spring、mysql
C3P0、Junit、dbutils的jar包的坐标。
这个项目操作:lkj_spring数据库下面的account表。这个项目使用XML的方式对数据库进行操作,不使用注解!
其中,DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。(类似于JDBCTemplate,使用的时候参考JDBCTemplate即可)
DBUtils三个核心功能介绍:
1、QueryRunner中提供对sql语句操作的API
2、ResultSetHandler接口,用于定义select操作后,怎样封装结果集
3、DBUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法
DBUtils的更多功能详解,查看文章:DBUtils解析 ; QueryRunner解析
使用注解来实现案例
这部分参考项目:spring_day02_account_annoioc项目。我们基于注解来实现上面的项目 spring_day02_account_xmlioc 的功能。
如果maven的jar没有进入项目,可能是我们没有在创建项目的视乎选择“自动导入”,我们可以点击项目-右键选择Maven-reimport 导入相应的jar。
我们发现,即使我们使用注解开发,我们的配置文件bean.xml依然存在;其次,我们的测试类中重复放的代码过多,下面我们会解决这两个问题。
spring的新注解
我们下面使用新的注解来开发,这些注解可以使得我们不需要使用bean.xml文件。
如下,之前spring_day02_account_annoioc项目的bean.xml有如下2部分内容,我们要去除bean.xml,就要想办法替换这两部分内容。
具体解决过程,参考项目:spring_day02_account_annoioc_withoutxml
为了可以删除bean.xml,我们必须替换这个bean.xml的功能。我们在java.config 目录下创建一个 SpringConfiguration.java 的类,使用这个类来替换bean.xml。(具体的注解与代码解析见参考项目:spring_day02_account_annoioc_withoutxml )。
SpringConfiguration.java是一个配置类,它的作用和bean.xml是一样的,使用这个类,可以替代bean.xml的功能。
而bean.xml需要替换2部分:
1)设置扫描注解的包的位置;
2)没办法通过加 @Component 来创建对象的类(既别人封装好的类),bean.xml中需要使用<bean>标签来创建对象。
下图是第二部分替换过程中遇到的问题,需要使用@Bean 注解解决 。
使用完注解配置后,我们发现纯注解的配置并没有比XML配置要简单,反而会更加麻烦。一般我们会使用注解与XML结合的方式: 如果类是别人编写的存在于jar包中的类,我们一般使用XML配置,这样只需要在bean.xml中配置标签即可,而使用注解则需要配置SpringConfiguration配置文件,还要添加一堆注解,很麻烦;如果类是我们自己编写的,可以使用注解配置,这样就可以使用@Component 直接获取对象,不需要写。
关于测试类中整合spring与Junit过程中使用的 @RunWith 注解,参考文章:@RunWith