框架...

springmvc

springMVC(接受浏览器发来的请求 + 给浏览器做出响应) spring mybatis(操作数据库 优化jdbc)
springmvc 基于MVC设计模式实现的 实习分层的思想 达到松耦合的目的 提高代码的复用性 扩展性 容错性
M:Model模型,用来封装数据
V:View视图,用来展示数据
C:Controller控制器,用来接受请求和处理响应
工作原理
请求 - 前端控制器(分配谁干活 调度接收请求分发请求) - 映射器处理器(拿请求的路径找到对应的类里的方法)
- 处理器适配器(get方法 返回数据) - 视图解析器(确定用哪一个网页展示数据) - 视图渲染(展示数据)
前端控制器:DispatcherServlet,用来接受请求分发请求
映射器处理器:HandlerMapping,用来根据url找具体的类里的具体方法
处理器适配器:HandlerAdaptor,用来执行方法里的代码
视图解析器:ViewResolver,定位页面的路径
视图:View,用来展示数据

spring


IOC : 是控制反转,指 把创建对象的过程交给了Spring
DI : 是依赖注入,指把对象间的依赖关系 自动维护
AOP : 是补充了OOP的不足 

loc

loc 控制反转 @Conponent
不用创建对象 底层是单例模式
将对象Object的创建的权力及对象的生命周期管理过程
管理对象创建和生命周期的机制称为控制反转


方式一:xml


选中resources-右键-new-xml config…-spring config-输入文件名-回车
<bean id="唯一标识" class="类的全路径"></bean>
 Map<id的值,class的对象> {hello = new Hello()}

//读取配置文件--参数是文件的路径
        ClassPathXmlApplicationContext spring =
                new ClassPathXmlApplicationContext("spring-config.xml");
        //获取对象--参数是配置文件里bean的id属性值
        Object o = spring.getBean("hello");
        System.out.println(o);//cn.tedu.spring.Hello@302552ec
        Hello h = (Hello) o ;
        h.hi();


底层用了反射创建对象
{hello = Class.forName(“cn.tedu.spring.Hello”).newInstance()}

方式二: loc


@Component spring提供
@Service
@Controller
选中resources-右键-new-xml config…-spring config-输入文件名-回车
 包扫描:只需要指定从哪个包开始扫描,
        用了@Component注解的类,自动ioc
    component-scan 包扫描
        base-package需要指定一个包的路径
    <context:component-scan base-package="cn.tedu.spring2">
</context:component-scan>

  @Test
    public void ioc2(){
        //1,读取核心配置文件
        ClassPathXmlApplicationContext spring =
                new ClassPathXmlApplicationContext(
                        "spring-config2.xml");
        //2,getBean -- 参数是类名,但是首字母要变成小写才行 User ->user  USer ->USer  UserIaa ->userIaa
        Object o = spring.getBean("user");
        System.out.println(o);//cn.tedu.spring2.User@37d4349f
        Object o2 = spring.getBean("userInfo");
        System.out.println(o2);//cn.tedu.spring2.UserInfo@2805d709


Map<类名首字母要小写 , 类的对象> -{user = new User()}

DI 

依赖注入
两个对象之间的依赖关系 可以由框架来完成
类上加@Autowired
通过暴力反射获得目标类里所有的成员变量 谁加@Autowired 就set对象
依赖注入的前提是必须ioc
对象的注入方式
1.构造注入
2.set注入
set注入方式
1.根据类型注入(默认规则)
2.根据名称注入 
@Autowired
@Qualifier(value = “id名字”)
这两个注解一块使用 

aop


通过通知(Advice)来指定具体做什么事情。 
如方法执行前做什么,方法执行后做什么,抛出异常做什么,从而实现对象行为(方法)的增强;
具体通过切点(PointCut)配置切点表达式(expression)
来指定在哪些类的哪些方法上织入(ware)横切逻辑;被切的地方叫连接点(JoinPoint)
实现的效果: 对方法的增强,本质上就是在执行方法的前后添加功能.
经典的使用场景: 统计性能分析 / 权限管理 / 事务管理 / 日志 / 缓存…
好处: 让程序员更专注业务代码本身 不用关心切面中的功能
切面: 本质上就是一个类
通知: 本质上就是一个方法,定义一些功能
分为:前置通知,后置通知和环绕通知,返回后通知,异常通知
前置通知 : 是方法执行前要执行的功能 before 权限 缓存
后置通知 : 是方法执行后要执行的功能 after 关流
环绕通知 : 是方法执行 前 后都要执行的功能 around 统计时间 性能分析
返回后通知 : afterReturning
异常通知 : afterThrowing
切点: 指定哪些类里的哪些方法要用 通知的功能
使用需要导入aop依赖包 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值