【Java开发】Java热门框架深入开发第3篇:二、Spring容器,三、Spring注解开发【附代码文档】

🏆🏆🏆教程全知识点简介:学习目标 一、Spring简介 2 初识Spring 3 Spring体系结构 二、IOC和DI入门案例【重点】 五、Bean的生命周期【了解】 问题导入 1 生命周期相关概念介绍 2 代码演示 3 Bean销毁时机 六、依赖注入(DI配置) 1 依赖注入方式【重点】 2 依赖自动装配【理解】 3 集合注入 今日目标 一、第三方资源配置管理 1 管理DataSource连接池对象 2 加载properties属性文件【重点】 四、Spring整合其他技术【重点】 二、AOP案例 1 案例-测量业务层接口万次执行效率 2 AOP切入点数据获取 2 Spring事务角色【理解】 二、请求与响应 1 请求映射路径【重点】 2 请求参数 3 日期类型参数传递【重点】 4 响应 三、REST风格 1 REST简介 2 RESTful入门案例 3 REST快速开发【重点】 今日内容 一、SSM整合【重点】 1 SSM整合配置 三、异常处理器【理解】 1 异常介绍 2 异常处理器 一、分模块开发与设计 1. 分模块开发的意义 模块拆分原则 2. 分模块开发(模块拆分) 二、依赖管理 1. 依赖传递 2. 可选依赖 4 可选依赖和排除依赖的区别 三、聚合与继承 1. 聚合工程 3. 继承关系 5. 聚合与继承的区别 四、属性管理 1. 属性 2. 版本管理 五、多环境配置与应用 1. 多环境配置作用 2. 跳过测试(了解) 六、私服 2. 私服仓库分类 3. 资源上传与下载 附件1:POM文件总体配置说明 一、MyBatisPlus简介 1. 入门案例 二、标准数据层开发 2. Lombok插件介绍 四、DML编程控制 1. id生成策略控制(Insert) 2. 多记录操作(批量Delete/Select) 3. 逻辑删除(Delete/Update) 4. 乐观锁(Update)

📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/459522 中查看
📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/459522 中查看
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节
🚀🚀🚀本篇主要内容
二、Spring容器
1 Spring核心容器介绍
问题导入
问题:按照Bean名称获取Bean有什么弊端,按照Bean类型获取Bean有什么弊端?
1.1 创建容器
- 方式一:类路径加载配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
- 方式二:文件路径加载配置文件
ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\\applicationContext.xml");
- 加载多个配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean1.xml", "bean2.xml");
[Javatpoint 教程]
1.2 获取bean对象
- 方式一:使用bean名称获取
弊端:需要自己强制类型转换
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
- ==方式二:使用bean名称获取并指定类型==
弊端:推荐使用
BookDao bookDao = ctx.getBean("bookDao", BookDao.class);
- 方式三:使用bean类型获取
弊端:如果IOC容器中同类型的Bean对象有多个,此处获取会报错
BookDao bookDao = ctx.getBean(BookDao.class);
1.3 容器类层次结构
图片无法加载
1.4 BeanFactory
- 类路径加载配置文件
Resource resources = new ClassPathResource("applicationContext.xml");
BeanFactory bf = new XmlBeanFactory(resources);
BookDao bookDao = bf.getBean("bookDao", BookDao.class);
bookDao.save();
- BeanFactory创建完毕后,所有的Bean均为延迟加载,也就是说 调用getBean()方法获取Bean对象时才创建Bean对象并返回给
2 Spring核心容器总结
2.1 容器相关
- BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载
- ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载
- ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能
- ApplicationContext接口常用初始化类
- ==ClassPathXmlApplicationContext(常用)==
- FileSystemXmlApplicationContext
2.2 bean相关
2.3 依赖注入相关
三、Spring注解开发
1 注解开发定义Bean对象【重点】
目的:xml配置Bean对象有些繁琐,使用注解简化Bean对象的定义
问题导入
问题1:使用什么标签进行Spring注解包扫描?
问题2:@Component注解和@Controller、@Service、@Repository三个衍生注解有什么区别?
1.1 基本使用
【第一步】在applicationContext.xml中开启Spring注解包扫描
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
xmlns:context="
xmlns:xsi="
xsi:schemaLocation="
<!--扫描com.itheima包及其子包下的类中注解-->
<context:component-scan base-package="com.itheima"/>
</beans>
[Apache Commons Collections]
【第二步】在类上使用@Component注解定义Bean。
//@Component定义bean
@Component("bookDao")
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
@Component
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
补充说明:如果@Component注解没有使用参数指定Bean的名称,那么类名首字母小写就是Bean在IOC容器中的默认名称。例如:BookServiceImpl对象在IOC容器中的名称是bookServiceImpl。
【第三步】在测试类中获取Bean对象
public class AppForAnnotation {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
System.out.println(bookDao);
//按类型获取bean
BookService bookService = ctx.getBean(BookService.class);
System.out.println(bookService);
}
}
注意:在测试类中不要调用bookService的save方法,因为还没有给BookServiceImpl中的bookDao赋值,调用bookService的save方法会出现空指针异常。
运行结果
[Vaadin 文档]
1.2 @Component三个衍生注解
说明:加粗的注解为常用注解
- Spring提供
@Component
注解的三个衍生注解 @Controller
:用于表现层bean定义@Service
:用于业务层bean定义@Repository
:用于数据层bean定义
@Repository("bookDao")
public class BookDaoImpl implements BookDao {
}
@Service
public class BookServiceImpl implements BookService {
}
2 纯注解开发模式【重点】
问题导入
问题1:配置类上使用什么注解表示该类是一个配置类?
问题2:配置类上使用什么注解进行Spring注解包扫描?
2.1 纯注解开发模式介绍
- Spring3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道
- Java类代替Spring核心配置文件
- @Configuration注解用于设定当前类为配置类
- @ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式
@ComponentScan({com.itheima.service","com.itheima.dao"})
- 读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象
//加载配置文件初始化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//加载配置类初始化容器
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
2.2 代码演示
【第一步】定义配置类代替配置文件
[RxJava 文档]
//声明当前类为Spring配置类
@Configuration
//Spring注解扫描,相当于<co
四、Spring整合其他技术【重点】
1 Spring整合mybatis【重点】
1.1 思路分析
问题导入
mybatis进行数据层操作的核心对象是谁?
1.1.1 MyBatis程序核心对象分析
1.1.2 整合MyBatis
- 使用SqlSessionFactoryBean封装SqlSessionFactory需要的环境信息
- 使用MapperScannerConfigurer加载Dao接口,创建对象保存到IOC容器中
1.2 代码实现
问题导入
问题1:Spring整合mybatis的依赖叫什么?
问题2:Spring整合mybatis需要管理配置哪两个Bean,这两个Bean作用分别是什么?
【前置工作】
- 在pom.xml中添加spring-context、druid、mybatis、mysql-connector-java等基础依赖。
- 准备service和dao层基础代码
[GeeksforGeeks Java] ```java public interface AccountService {
void save(Account account);
void delete(Integer id);
void update(Account account);
List<Account> findAll();
Account findById(Integer id);
} @Service public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
public void save(Account account) {
accountDao.save(account);
}
public void update(Account account){
accountDao.update(account);
}
public void delete(Integer id) {
accountDao.delete(id);
}
public Account findById(Integer id) {
return accountDao.findById(id);
}
public List<Account> findAll() {
return accountDao.findAll();
}
} public interface Acco
- 点赞
- 收藏
- 关注作者
评论(0)