设计模式之 依赖注入
「依赖注入」就是为了完成这样的 目标:将 依赖组件 的配置和使用分离开,以降低使用者与依赖之间的耦合度。
通过@component将类作为spring bean注入到spring container中,然后用 context.getBean 代替 new 来创建所需的对象 。值得注意的是,即使不显式创建,这些类也会被用单例模式自动创建好一个对象,等待被使用。如果要显式创建,必须用@Scope(value = “prototype”) 原型模式注解
对于有依赖的关系的对象,通过@Autowired 在spring container中自动寻找相应的类来建立依赖
预安装:
- JDK: Java10.0.2
- IDE: IDEA
- 管理工具: Maven 3.6.1 Git
SDKMAN
然而在看很多教程的时候发现,java8用的比较多,我又不想卸载我的java10,于是找到了一个SDK管理工具用于管理java版本
另外该软件还可以管理Ant、Gradle、Maven、Springboot-cli、Groovy、Kotlin、Scala。可以说是java开发必备了
POSTMAN
在项目还没有开发出前端页面时,用于模拟发送HTTP请求
界面挺不错的
例:
POST –> localhost:8080/api/v1/person
Body – > raw ,JSON –> {内容}
UUID Generator
IDEA相关配置
Maven配置本地仓库
在maven安装目录中的conf -> setting 中找到默认的本地仓库地址 为path/to/local/repo
新建一个本地仓库文件夹,并将地址替换 C:/Tools/maven/LocalWarehouse
—–注意是另外写一行localrepository ,不是修改注释里面的
其实IDEA自带了maven,但是在这里设置为已经安装的相应配置。在IDEA的setting -> Build tools 中设置maven的所在目录为C:\Tools\maven\apache-maven-3.6.1
,setting文件 C:\Tools\maven\apache-maven-3.6.1\conf\settings.xml
和本地仓库C:\Tools\maven\LocalWarehouse
Git
在setting - > version control 中 Git已经自动检测到,Github输入账号密码即可
实践
使用spring initializr 新建项目,在dependency的web中选择spring web
一个项目从数据层,服务层和用户接口层逐步去实现。
数据层
数据模型
1 | public class Person { |
- 输入的名字限制为非空
- 格式为JSON
数据操作接口
1 | public interface PersonDao { |
- 如果只输入了姓名,则生成一个随机ID
接口实现
1 | "fakeDao") ( |
- 给数据仓库命名,可以方便后续service处转为其他类型的repository
- 注意List的add/stream/set/remove等用法
服务层
1 |
|
- 注解为@service,明确作用
- @Autowired 依赖注入 在spring container中自动寻找相应的类来建立依赖
- @Qualifier(“fakeDao”) 按名查找
- 服务层其实是在调用数据层的操作
用户接口层
1 | "api/v1/person") ( |
- @RequestMapping 指定HTTP路径
- @RestController 明确控制器功能
- @PostMapping @GetMapping @DeleteMapping @PutMapping 将HTTP类型与方法绑定
- @PathVariable(“id”) 指定变量
- @RequestBody 指定寻找部位
TIPS
- IDEA换上了新出的Mono字体真是赏心悦目啊
- 实现接口时,可以用快捷键 Ctrl + i
- 最后通过mave打包出来的jar是可以直接运行的