目录
(1)User + UserMapper + UserService——>不改动
一、复习创建对象注解
1.@Component:可以创建任意对象,创建的对象的默认名称是类名的驼峰命名法,也可以指定对象的名称@Component("指定名称")。
2.@Controller:专门用来创建控制器的对象(Servlet),这种对象可以接收用户的请求,可以返回处理结果给客户端。
3.@Service:专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给界面层。
4.@Repository:专门用来创建数据访问层的对象,负责数据库中的增删改查所有操作。
二、开始改善
依旧使用原来的MVC构建的项目,采用注解开发来改善。从下往上开始:
(1)User + UserMapper + UserService——>不改动
(2)UserMapperImpl——>改动
@Repository //专门用来交给Spring框架创建数据访问层的对象,负责数据库中的增删改查所有操作.
public class UserMapperImpl implements UserMapper {
@Override
public int addUser(User user) {
System.out.println(user.getUserName() + "用户数据添加成功...");
return 1;
}
}
(3)UserServiceImpl——>改动
@Service //专门用来交给Spring框架创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给界面层.
public class UserServiceImpl implements UserService {
// 在所有业务逻辑层中都必定有数据访问层的对象
@Autowired
private UserMapper UserMapper;
@Override
public int addUser(User user) {
return UserMapper.addUser(user);
}
}
(4)UserController——>改动
@Controller //专门用来交给Spring框架创建控制器的对象(Servlet),这种对象可以接收用户的请求,可以返回处理结果给客户端.
public class UserController {
// 在所有界面层中都必定有业务逻辑层的对象
@Autowired
private UserService userService;
/**
* 界面层的功能实现,对外提供访问的功能
*
* @param user 待添加的用户信息
* @return 添加结果
*/
public int addUser(User user) {
return userService.addUser(user);
}
}
(5)分层策略+单包扫描
applicationContext_controller.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 单个包扫描(推荐使用)基于Spring注解开发,必须添加包扫描,查询扫描到注解才能够创建对象和管理对象之间依赖关系 -->
<context:component-scan base-package="com.dhrj.java.zsitking.controller"/>
</beans>
applicationContext_mapper.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 单个包扫描(推荐使用)基于Spring注解开发,必须添加包扫描,查询扫描到注解才能够创建对象和管理对象之间依赖关系 -->
<context:component-scan base-package="com.dhrj.java.zsitking.dao"/>
</beans>
applicationContext_service.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 单个包扫描(推荐使用)基于Spring注解开发,必须添加包扫描,查询扫描到注解才能够创建对象和管理对象之间依赖关系 -->
<context:component-scan base-package="com.dhrj.java.zsitking.service"/>
</beans>
totalContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 单个Spring的applicationContext文件导入 -->
<!-- <import resource="applicationContext_mapper.xml"/>-->
<!-- <import resource="applicationContext_service.xml"/>-->
<!-- <import resource="applicationContext_controller.xml"/>-->
<!-- 批量导入Spring的applicationContext文件 -->
<import resource="applicationContext_*.xml"></import>
</beans>
三、junit测试基于注解式注入效果
package com.dhrj.java.zsitking;
import com.dhrj.java.zsitking.controller.UserController;
import com.dhrj.java.zsitking.pojo.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* created by on 2022/6/7
* 描述:测试基于Spring常用注解搭建三层架构的项目
*
* @author ZSAndroid
* @create 2022-06-07-14:43
*/
public class MyTest {
@Test
public void test01() {
// 1.创建并启动容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("totalContext.xml");
// 2.取出对象
UserController userController = (UserController) applicationContext.getBean("userController");
// 3.测试功能
userController.addUser(new User(1998, "张松", 24));
}
}
四、总结
仅自己学习记录,如有错误,敬请谅解~,谢谢~~~