框架总结(华清远见)
spring框架
特点
IOC:
- Inversion of Control (IoC) : 控制反转 , spring框架创建对象,管理对象,以及管理对象之 间的依赖关系。
- dependency injection (DI) :依赖注入 , 通过构造函数,或set方法, 给对象的属性赋值。 IoC是通过DI来实现的。
- bean: java类型 , 由spring框架创建的对象,就被称为bean . (pojo: 纯java类(私有的属 性,公开的get/set方法这种类。))
- Aspect-Oriented Programming (AOP): 面向切面编程 , 对比OOP(面向对象编程)
框架实现了new操作
Student stu = new Student();
lombok可以帮助开发者 自动生成实体类相关的方法
使用前需要安装插件:Lombok
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
实体类上加@Data注解
@AllArgConstructor 有参构造
@NoArgConstructor 无参构造
实体类中所有的成员变量 类型建议使用包装类
创建
1、创建工程,导入依赖
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
在resource路径下创建spring.xml文件
<bean id="student" class="com.nuc.gjq.entity.Student"></bean>
Ioc容器通过读取spring.xml配置文件,加载bean标签来创建队形
调用API获取Ioc容器已经创建的对象
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
Student stu = (Student)ac.getBean("student");
System.out.println(stu);
2.IoC容器创建bean属性注入的两种方式 setter注入
<bean id="student" class="com.nuc.gjq.entity.Student"></bean>
给成员变量赋值
<bean id="student" class="com.nuc.gjq.entity.Student">
<property name="id" value="1"></property>
<property name="name" value="张三"></property>
<property name="age" value="23"></property>
</bean>
构造函数注入,实体类中有三个参数的构造函数
<bean id="student" class="com.nuc.gjq.entity.Student">
<constructor-arg name="id" value="2"></constructor-arg>
<constructor-arg name="name" value="李四"></constructor-arg>
<constructor-arg name="id" value="18"></constructor-arg>
</bean>
可以没有name,IoC会通过(id,name,age)顺序给参数赋值,也可以用index
<bean id="student" class="com.nuc.gjq.entity.Student">
<constructor-arg index="0" value="2"></constructor-arg>
<constructor-arg index="1" value="李四"></constructor-arg>
<constructor-arg index="2" value="18"></constructor-arg>
</bean>
注解注入
<context:component-scan base-package="com.nuc.gjq.*"></context:component-scan>
spring中的bean
- bean是根据scope来生成,表示bean的作用域, scope有4中类型:
- singleton,单例模式,表示通过spring容器获取的对象是唯一的,默认的
- prototype,原型模式,表示通过spring容器获取的对象是不同的
- request,请求,表示在一次HTTP请求内有效
- session,会话,表示在一个用户会话内有效
- request,session适用于Web项目
bean的autowire属性
autowire:自动装配, 为了减少构造器函数初始化对象和set注入初始化对象, 可以使用autowire , 让spring框架的容器对象,自动匹配容器中的其他bean对象,然后给bean进行初始化。
spring容器创建对象的注解
1、@Component : 在类前面添加这个注解,spring框架,看到这个注解,就会在spring容器中创建 对象。
2、@Configuration:在类前这个注解,spring框架,看到这个注解,就会在spring容器中创建对象 。
3、@Bean:一般在方法前面添加这个注解,spring框架会在容器中创建这个对象。
4、在程序中添加注解@Component,@Controller,@Mapper,@Service,实体类在字段上加@Value
spring MVC框架
主要特点:三层架构
M-model : 实体类, dao , service ,统称为model.
V-View : 界面,展示数据
C-Controller :控制层, 调用业务层,转发到对应的view.
SpringMVC开发步骤
1、新建项目。 2、修改目录 3、修改pom.xml文件,添加各类依赖。 4、添加springmvc配置文件,指定包扫描,添加视图解析器。 5、删除web.xml文件,新建web.xml文件 6、在web.xml文件中注册springmvc框架。 7、删除index.jsp页面,并新建,发送请求给服务器。 8、开发控制器(Servlet),它是一个普通类。 9、添加tomcat进行测试功能。
@RequestMapping详解:
此注解就是来映射服务器访问的路径 1、此注解可加在方法上,是为此方法注册一个可以访问的名称 2、此注解可以加在类上,相当于包名 3、此注解可区分get请求和post请求
Ajax Json交互
Json是?种与语??关的数据交互格式,就是?种字符串,只是?特殊符号{}内表示对象、[]内表示数组、""内是属性或值、:表示后者是前者的值。
{“name”: “Michael”}可以理解为是?个包含name为Michael的对象
[{“name”: “Michael”},{“name”: “Jerry”}]就表示包含两个对象的数组
前端到后台:前端ajax发送json格式字符串,后台直接接收为pojo参数,使?注解@RequstBody
后台到前端:后台直接返回pojo对象,前端直接接收为json对象或者字符串,使?注解@ResponseBody,此注解不走视图解析器,而是直接将数据写入流中。
过滤器(Filter):
对Request请求起到过滤的作?,作?在Servlet之前,如果url-pattern配置为/*可以对所有的资源访问(servlet、js/css静态资源等)进?过滤处理
监听器(Listener):
实现了javax.servlet.ServletContextListener 接?的服务器端组件,它随Web应?的启动?启动,只初始化?次,然后会?直运?监视,随Web应?的停??销毁,做一些初始化工作以及监听特定事件对其处理,比如从A方法进入B方法,A方法需要知道B方法执行完继续进行下一步,那么A方法就可以监听B方法的运行情况。
拦截器(Interceptor):
拦截访问的控制器?法(Handler),一个拦截器拦截三次。
-
在Handler业务逻辑执?之前拦截?次 -
在Handler逻辑执?完毕但未跳转??之前拦截?次 -
在跳转??之后拦截?次
Mybatis 框架
MyBatis框架搭建的步骤
- java项目中创建持久层接口
- resource项目中创建映射文件
- 将映射文件注册到SqlMapConfig.xml文件中
resultMap的使用
如果实体类的属性和表的字段名不一致,可以使用resultMap 设置实体类的属性和表的字段的对应关 系。
MyBatis使用${}绑定参数
绑定参数相当于
J
D
B
C
里边的
S
t
a
t
e
m
e
n
t
对象,是通过字符串拼接实现的绑定,所以
{}绑定参数相当于JDBC里边的Statement对象,是通过字符串拼接实现的绑定,所以
绑定参数相当于JDBC里边的Statement对象,是通过字符串拼接实现的绑定,所以{}绑定参数会出现sql注入的问题。
Map传参
使用Map作为传递参数的载体,在SQL语句中绑定参数时使用Map的Key作为参数名即可。
优化测试类 利用Junit的前置后置方法@Before和@After注解简化代码,优化测试类代码
优化过后我们会就可以将以前代码中的这些对象删除了,应为junit在启动的时候会自动调用@Before修饰的方法,清理了过后我们会发现整段代码都干净了很多
Mybatis-Plus 框架
mybtis-plus是个mybatis的增强工具,在mybatis的基础上只做增强不做改变,为简化开发,提高效率而生。
- 对mybatis只做增强不做改变,引入他不会对现有工程产生影响
- 只需要简单的配置即可快速进行单表CRUD操作,从而节省大量的时间
- 代码生成,自动分页,逻辑删除,自动填充功能等一应俱全
@Mapper与@MapperScan(“包名”)区别
- @MapperScan(“包名”):扫描指定包下的mapper接口,将该接口的代理类交给spring容器来保存
- @Mapper:将该接口的代理类交给spring容器来保存
- @Mapper用在指定接口上,@MapperScan(“对应接口所在包名”)用在启动类或配置文件上
spring boot框架
创建Spring Boot 项目
使用 Spring Initializr 创建 Springboot 项目。
Spring Initializr有几种用法:
- 通过Web界面使用。
- 通过Spring Tool Suite使用。
- 通过IntelliJ IDEA使用。
- 使用Spring Boot CLI使用
(1)、通过官网web界面创建
? (a)、浏览器打开start.spring.io,如下图:
左侧根据你需要选择项目类型、编程语言、Springboot版本、打包方式、Java版本,输入项目信息,右侧还可以选择需要的依赖,下面有三个按钮GENERATE、EXPLORE、SHARE。点击GENERAE直接下载,点击EXPLORE弹出一个页面可以展示生成的代码,再点击download进行下载。SHARE可以复制创建springboot的路径。
? (b)、将下载的压缩包解压到计算机中,这就是Springboot最基本的项目架构了。
(2)、IDEA创建Springboot项目
? (a)、打开IDEA,依次点击File–>New–>project,出现如下界面:
红色方框里的地址是不是和上一种方式的地址一样?其实IDEA创建本质上也和上一样的,都是从这个网址创建,不过IDEA自动帮我们做了。
(b)、点击Next出现如下界面,也和上一种方式类似,输入项目信息,选择项目类型,Java版本,打包方式等。
(c)、继续点击Next出现如下界面,是不是也很熟悉,这里选择依赖、springboot版本。
(d)、继续点击Next出现如界面,输入项目名称,选择项目路径,点击Finish完成创建。
和上一样的,都是从这个网址创建,不过IDEA自动帮我们做了。
(b)、点击Next出现如下界面,也和上一种方式类似,输入项目信息,选择项目类型,Java版本,打包方式等。
[外链图片转存中…(img-sOgws5xT-1665756909690)]
(c)、继续点击Next出现如下界面,是不是也很熟悉,这里选择依赖、springboot版本。
[外链图片转存中…(img-VOMfbCK0-1665756909690)]
(d)、继续点击Next出现如界面,输入项目名称,选择项目路径,点击Finish完成创建。
|