课程资源链接
链接:https://p去掉我an.baidu.com/s/1HCLhBfw去掉我ldhdcvjEND19Bng
提取码:pylp
spring
spring 一套框架
- 核心 基石
- 构建项目
- 微服务(大项目拆成小项目 ,便于维护)(该项目用不着)
- 更多客户端,集成整合数据(…用不着)
Spring Framework
- 管理对象(bean) 的思想
1.1. 面向对象; 面向切面 - 访问数据库(管理事务,整合mybatis)
- web开发 (使用mvc)
- 集成(发邮件,定时任务,发送消息,安全队列)
- 更多功能看官方文档 (reference.doc)
IOC(基础)
降低耦合度
采用其他办法(依赖注入)建立bean的联系
使用代码进行理解
- CommunityApplication做的事情,容器怎么创建(ctrl里面的注解),容器里的bean怎么来的(四个注解)
- 注解(被扫描的bean)
扫描该类所属的包下的bean和子包下的bean
四种注解加在类上,类就可以被扫描到(ctrl后里面都有@component,都由component实现,区别在于语义)
- @Controller 处理请求的组件
- @Service 业务组件
- @Repository 数据库访问的组件
- @Component 开发的类在任何地方都可以用(访问数据库、处理业务、请求)
代码示例
ioc核心是spring容器 容器是自动创建的
如何得到容器
实现接口
- ApplicationContext 就是spring容器
- ctrl 以后再ctrl ,其祖宗接口是 BeanFactory
- 测试类使用正式环境中的配置类
- 获取容器,打印容器
- 使用容器(管理bean)
3.1 创建bean
@Primary 注解
每个bean都有名字,默认类名 首字母小写
返回的是个Object(加上类型/或者前面进行强制转型)
Spring 容器管理bean的其他方法
- 创建bean
- 管理Bean的初始化,销毁
管理作用域的范围 - 单例的,实例化一次,销毁一次
- 想要每次getBean都新建一个Bean 使用 @scope
- 默认 单例 singleton
- prototype
- 管理第三方的jar包(无法在上面加注解怎么办)
- 自己写个配置类,在类中进行注解声明
- 以后会有很多配置类,都放在config包下面(已经有了service dao controller)
主动获取(底层的内容,比较笨拙),并不算依赖注入
依赖注入
怎么方便怎么用
不通过容器主动获取
给当前bean注入
使用注解 @ 加在成员变量之前
意思:spring容器把AlphaDao注入给这个属性
依赖注入:只需要声明一个属性,写一个注解,bean就有了可以直接拿来用
如果需要指定 加@ Qualifiar(" xxx")
xxx:repository 后面跟的名字
@Autowires
- 加在构造器前面
- 加在setter前面
- 加在成员变量前面(常用)
综合演示项目中的依赖注入
彼此互相依赖,它们的关系可以用依赖注入来实现
controller :
@Autowired
private AlphaService alphaService;
//模拟处理 查询请求
@RequestMapping("/data")
@ResponseBody
public String getData(){
return alphaService.find();
}
service:
@Service
//@Scope("prototype")
public class AlphaService {
@Autowired
private AlphaDao alphaDao;
//模拟查询任务
public String find(){
return alphaDao.select();
}
}