一、前言
SSM-Spring【IOC进阶二】主要总结了通过xml和注解相结合来实现CRUD操作,本篇文章则主要总结纯注解方式来实现CRUD操作。
二、需求
假设有一个和账户相关的项目,现需要实现基本的CRUD操作。
三、实现
(一)技术选择
持久层选用 dbUtils、数据库连接池选用 c3p0.
(二)项目结构
(三)数据库
数据库spring中的account表的结构与数据如下图所示:
account表的结构:
account表的数据:
(四)domain层
1 | public class Account implements Serializable { |
(五)dao层实现
IAccountDao.java
1 | /** |
AccountDaoImpl.java
注意:需要添加注解
对于类需要添加:@Repository(“accountDao”)
对于成员变量runner需要添加:@Autowired; @Value(“#{runner}”)也可以
1 | "accountDao") ( |
(六)service层实现
IAccountService.java
1 | public interface IAccountService { |
AccountServiceImpl.java
注意:需要添加注解
对于类需要添加:@Service(“accountService”)
对于成员变量runner需要添加:@Resource(name = “accountDao”)
1 | "accountService") ( |
(七)编写配置文件保存数据库连接所需要的参数
jdbcConfig.properties配置文件:
1 | jdbc.driver=com.mysql.cj.jdbc.Driver |
(八)编写注解
1、在纯注解的方式中,我们需要使用一个配置类来达到xml文件的效果,如下:
JdbcConfiguration.java:
1 |
|
注:
a. 使用 @Configuration 注解来表明该类是一个配置类;
b. 使用 @PropertySource(“classpath:jdbcConfig.properties”) 注解来加载外部的properties配置文件;
c. 使用 @Value(“${jdbc.driver}”) 注解来从容器中获取值,然后注入数据给相关参数变量;
d. 使用 @Bean(name = “runner”) 注解将方法返回的对象添加到ioc核心容器中,并且name的值就是这个bean对象的id;
e. 使用 @Scope(“prototype”) 注解将bean对象的作用范围调整为多例模式。
2、通常在一个项目中,配置类不止一个,因为我们更希望不同的层次中使用不同的配置类。但是最后,我们都会编写一个总的配置类进行整合,如:
SpringConfiguration.java:
1 | /** |
注:
a. 使用 @Configuration 注解来表明该类是一个配置类;
b. 使用 @ComponentScan(value = {“com.zuobiao”}) 注解来告诉Spring,在进行创建容器时,需要扫描指定的包,根据配置的注解,生成对应的对象,然后加入到ioc容器中;
c. 使用 @Import(value = {JdbcConfiguration.class}) 注解将其他配置类导入进来,从而在加载该类时,其他类也会被加载。
(九)测试
1 | public class test { |
四、总结
1、当使用纯注解方式时,由于是第一次使用,可能就会觉得有点比较麻烦,有点难,但其实多使用几次之后就会发现,其实也不过如此,所以在项目中也可以考虑使用该种方式;
2、该案例中使用了比较多的注解,第一次可能会记不住,因此在SSM-Spring【常用注解整合】中有总结了经常使用的注解;
3、对于测试也可以使用Spring整合junit后的方式。
参考文章:SSM-Spring【对junit的整合】
Java新手,若有错误,欢迎指正!