**Java 主流框架 **
Spring、SpringMVC、MyBatis、MyBatisPlus、Hibernate、JPA等。
SSH:最初是Spring+Stucts2+Hi ,之后Stucts2被SpringMVC取代。
SSM:Spring+SpringMVC+MyBatis
新项目使用SpringBoot,早起的SSH项目由于维护成本高,基本不会推翻重做,但会维护一些SSM项
目。
无论是SSH还是SSM,Spring、SpringMVC必不可少。从2004年推出至今,依旧是主流框架中不可获取
的一部分
Spring
概念
一个轻量级开源的Java框架。是一个管理项目中对象的容器,同时也是其他框架的粘合器,目的就是对
项目进行解耦。
轻量级:对原有代码的侵入很小。
Spring的核心是IOC控制反转和AOP面向切面编程
类上加的注解
@Component
当一个类不好归纳时,定义为普通组件
@Controller
定义一个类为控制层组件
@Service
定义一个类为业务层组件
@Repository
定义一个类为持久层(数组访问层)组件
@Lazy/@Lazy(value=true)
设置该类为懒加载。
@Scope(value="singleton/prototype")
设置为单例/原型模式。
属性上加的注解
@Autowired
优先使用byType方式从Spring容器中获取对应类型的对象自动装配。先检索Spring容器中对应类型对象的数量,如果数量为0直接报错;数量为1直接装配
数量大于1,会再尝试使用byName方式获取对应id的对象,但要配合@Qualifier(value="某个对象的id")一起使用,指定id进行装配
@Qualifier(value="某个对象的id")
配合@Autowired注解,使用byName方式获取某个对象id的bean进行装配
@Resource(name="某个对象的id")
该注解相当于@Autowired+@Qualifier(value="某个对象的id")
优先使用byName方式,从Spring容器中检索name为指定名的对象进行装配,如果没有则尝试使用byType方式,要求对象有且只有一个,否则也会报错。
AOP
概念
Process Oriented Programming 面向过程编程POP
Object Oriented Programming 面向对象编程OOP
Aspect Oriented Programming 面向切面编程AOP
以上都是编程思想,但AOP不是OOP和POP的替代,而是增强、拓展和延伸。主流编程思想依然是OOP。
作用
在传统的OOP思想中,我们将程序分解为不同层次的对象,通过封装、继承、多态等特性,
将对象组织成一个整体来完成功能。但在某些场景下,OOP会暴露出一些问题。
如在处理业务中,除了核心的业务代码外,通常还会添加一些如果参数验证、异常处理、事务、记录日志等操作。
这些内容会分散在各个业务逻辑中,依旧会出现大量重复操作。如果将这些重复的代码提取出来,在程序编译运行时,
再将提出来的内容应用到需要执行的地方,就可以减少很多代码量。方便统一管理,更专注于核心业务。
简单来说,就是将不同位置中重复出现的一些事情拦截到一处进行统一处理。
SSM 项目搭建
整体流程
1.创建基于Maven的webapp项目
2.修改web.xml版本为4.0,创建java、resoureces目录、项目包结构、web-inf下的页面目录
3.导入依赖
spring-webmvc
mybatis
mybatis-spring
mysql****druid
spring-jdbc
jstl
4.配置Spring
创建application.xml
扫描项目根包
配置web.xml
设置全局参数: ,读取application.xml文件
设置全局监听器:ContextLoaderListener,初始化Spring容器
5.配置SpringMVC
创建springmvc.xml
扫描控制层所在包
设置内部资源视图解析器:InternalResourceViewResolver,设置前后缀
配置web.xml
设置请求分发器:DispatcherServlet,在其中读取springmvc.xml配置文件
过滤器解决请求中文乱码:CharacterEncodingFilter
6.配置MyBatis
创建mybatis-config.xml(官网模板)
在application.xml中注入
数据库连接池Druid:DruidDataSource
SQL会话工厂:SqlSessionFactoryBean
映射扫描配置器:MapperScannerConfigurer
7.执行sql语句
创建dao层接口,定义方法
在resoureces下创建mapper目录创建sql映射文件xx.xml(官网模板),在其中定义sql语句