Spring Framework
- IoC(Inversion of Control):程序中不主动 new 对象,而是由外部(Spring 的容器)提供对象,实现充分解耦;这一创建权的转移称为控制反转,这些被管理的对象称为 Bean;
- DI(Dependency Injection):在容器中建立各个 Bean 之间的依赖关系的过程,称为依赖注入;
- Maven Dependency 中导入 spring-context 坐标后:
1 | // 在 resources/ 中创建 applicationContext.xml: |
- Bean 的生命周期:创建对象(内存分配)→ 构造 → 属性注入(Setter)→ 初始化(继承自 InitializingBean 的 afterPropertiesSet())→ 使用 → 销毁(继承自 DisposableBean 的 destroy());
- Bean Factory ⇒ ApplicationContext ⇒ ClassPathXmlApplicationContext;
Spring Boot
- Spring Boot Web 内置 Tomcat,兼容 Servlet 与 JSP 规范;三层架构:Controller(控制层)、Service(业务逻辑层)、DAO(数据访问层 / 持久层);
1 | // 注解配置 Bean |
- 通过注解开发支持无 XML 配置;纯注解开发:
@Component("bookDao")
,三个与之完全等同的注解:@Service
、@Repository
、@Controller
; @Scope("prototype")
,@PostConstruct
,@PreDestroy
,@Autowired
(默认按类型注入);@Primary
(指定优先此类对象)、@Qualifier("")+@AutoWired
(类型耦合)、@Resource(name="")
(名字耦合,不推荐)、@Value("")
;
SpringMVC
- 使用
@RestController
声明 Controller 负责 Tomcat 路由和返回;原始方法为在@RequestMapping("/")
方法中声明HttpServletRequest
对象参数,再通过getParameter(name)
获得对应参数字符串;现在处理函数只需定义好参数即可获取 GET 与 POST 方法后接的各项参数;@RequestParam(name="username", require=false)
设置不必须的后接参数; - 一个
@RestController
类的方法的返回值即为@ResponseBody
,若为复杂类型,会转换成 JSON 返回给客户端; - 前端工程化框架打包的结果存放在 /Resources 中;
- 启动类声明注解
@SpringBootApplication
中包含了@ComponentScan
; - 过滤器、Cookie、Session 等内容属于 JavaWeb;JWT、OSS 等技术属于解决方案;接受请求、相应数据、拦截器、全局异常处理等 Spring 内 Web 功能属于 SpringMVC;IoC、DI、AOP、事务管理等架构理念支持属于 Spring Framework,JDBC 等数据库操作被封装在 MyBatis;后三者统称为 SSM;SpringBoot 用于快捷启动整个项目的开发;
Mybatis
- 在 application.properties 中配置连接四要素:Driver、URL、Username、Password;
- 接口类使用
@Mapper
注解,返回值变量定义前加@Select("command")
注解,会自动将查询答案返回到此变量中,也可以定义方法;增删改的操作类似;使用@Options
返回插入后条目的主键值;可以用@Results
和@Result
字段注解手动映射返回值封装; - 使用
getConnection()
获取数据库连接池的连接;可使用 lombok 工具包根据特定注解自动生成各类方法(getter()、toString() 等);