spring框架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring框架相关的知识,希望对你有一定的参考价值。
spring是什么?
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
spring是一站式框架
web层:springMVC
service层:spring的ioc
dao层:spring的jdbcTemplate
spring的优点
1.低侵入式设计,代码污染极低
spring版本
spring 4.x(目前更新spring至 5.0)
spring的ioc操作
1、ioc的配置文件方式
2、ioc的注解方式
spring的ioc底层原理(降低类与类之间的耦合度)
1、xml配置文件
2、dom4j解析xml
3、工厂设计模式
4、反射
具体实现:
① 创建xml配置文件,配置要创建对象类
② 创建工厂类,使用dom4j解析配置文件+反射
返回UserService对象的方法
public static UserServicer getService(){}
使用dom4j解析xml文件 根据id值userService,得到id值对应的class属性值
String classValue = "class属性值"
使用反射创建类对象
Class clazz = Class.forName(classValue);
创建类对象
UserService service = clazz.newInstance();
return service;
配置文件提示问题
spring引入schema约束,把约束文件引入到eclipse中
①下载配置文件
②复制约束路径
③在属性中的XML CataLog中设置
Bean实例化的方式
第一种 使用类的无参构造方法创建(重点)
第二种 使用静态工厂创建
第三种 使用实例工厂创建
Bean标签常用属性
id: 名称,任意命名,不包含特殊符号
class:创建对象所在类的全路径
name: 功能和id属性一样,可以包含特殊符号
scope:
singleton:默认值,单例的
prototype:多例的
request:创建对象把对象放到request域中
session:创建对象把对象放到session域里中
globalSession:
属性的注入
第一种 使用set方法注入(重点)
public class User{ private String name; public void setName(String name){ this.name = name; } }
第二种 有参数构造注入
public class User{ private String name; pulbic User(String name){ this.name = name; } }
第三种 使用接口注入
public interface Dao{ public void delete(String name); } public class DaoImpl implements Dao{ private String name; public void delete(String name){ this.name = name; } }
注入对象类型属性(重点)
Service和Dao
P名称控件注
xmlns:p="http://www.springframework.org/schema/p"
注入复杂类型属性
数组:
list集合:
map集合:
properties类型:
IOC和DI的区别
IOC(inversion of control):控制反转,把对象创建交给spring进行配置
DI(Dependency Injection):依赖注入,向类里面的属性中设置值
关系:依赖注入不能单独存在,需要在ioc的基础之上来完成操作
spring整合web项目原理
1.加载spring核心配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
每次加载,new对象,功能可以实现,效率很低
2.实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
3.实现原理:
(1)SevletContext对象
(2)监听器
具体使用:
在服务器启动时候,为每个项目创建一个Servlet对象
在ServletContext对象创建时候,使用监听器可以具体到ServletContext对象在什么时候可以创建
使用监听器听到ServletContext对象创建时候,加载spring配置文件,把配置文件配置对象创建
把创建出来的对象放到ServletContext域对象里面(setAttribute方法)
获取对象时,到ServletContext域得到(getAttribute方法)
以上是关于spring框架的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段