02.springMVC设计思想及springAOP

本文深入探讨了Spring MVC的设计思想,包括MVC架构的三层分离,层级代码结构及其加载流程。此外,还详细讲解了Spring中的AOP(面向切面编程),解释了动态代理的概念,如JDK和CGLIB动态代理的区别,以及AOP在不修改源码情况下扩展方法的重要性。最后,总结了Spring框架的IOC-DI和AOP的核心概念,强调了它们在降低耦合性和提高代码复用性方面的贡献。
摘要由CSDN通过智能技术生成

MVC设计思想

历史问题:如果将大量的代码都写到一个方法中,后期维护不易

MVC说明:

1.M Model 数据层 数据处理/数据的持久化

2.V View 视图层 前端页面相关的内容(看到的内容)

3.C Control 控制层 控制数据的流转过程

层级代码结构

前提:在项目中代码需要松耦合,根据MVC指导思想,后端代码进行了优化,演变为现在的层级代码结构.

层级结构:

1.Controller层: 控制层,主要是用来实现与前端页面的交互!!!

2.Service层: 业务层,主要实现数据的处理!!!

3.Dao层/Mapper层: 持久层,与数据库进行交互.实现数据CURD操作!!!

4.POJO 根据数据表定义的实体对象

层级结构入门案例 :

1.定义表的实体对象层POJO层(User表,需要实现序列化接口)

package com.jt.demo10.pojo;
import java.io.Serializable;
public class User implements Serializable {
   
    //1.属性都是私有的,方法是公有的
    //2.实现序列化接口
    // 作用:(1)保证数据按照正确的格式输出!!!
    //      (2)在多线程条件下,共享数据必须序列化
    //3.POJO的对象一般都是用来实现数据的传递的
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    public Integer getId() {
   
        return id;
    }

    public void setId(Integer id) {
   
        this.id = id;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public Integer getAge() {
   
        return age;
    }

    public void setAge(Integer age) {
   
        this.age = age;
    }

    public String getSex() {
   
        return sex;
    }

    public void setSex(String sex) {
   
        this.sex = sex;
    }
}

2.定义Mapper级(面向接口编程—定义接口和实现类)
定义Mapper层接口:

package com.jt.demo11.mapper;

import com.jt.demo11.pojo.User;

public interface UserMapper {
   
    void addUser(User user);
}

定义Mapper层接口实现类:

package com.jt.demo11.mapper;

import com.jt.demo11.pojo.User;
import org.springframework.stereotype.Repository;

@Repository
public class UserMapperImpl implements UserMapper {
   

    @Override
    public void addUser(User user) {
   
        System.out.println("操作成功:"+user.getName());
    }
}

3.定义Service层(面向接口编程—定义接口和实现类)

定义Service层接口:

package com.jt.demo11.service;

import com.jt.demo11.pojo.User;

public interface UserService {
   
    void addUser(User user);
}

定义Service层接口实现类:

package com.jt.demo11.service;

import com.jt.demo11.mapper.UserMapper;
import com.jt.demo11.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
   
    @Autowired
    private UserMapper userMapper;
    @Override
    public void addUser(User user) {
   
        userMapper.addUser(user);
    }
}

4.定义Controller层

定义Controller层类:

package com.jt.demo11.controller;

import com.jt.demo11.pojo.User;
import com.jt.demo11.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class UserControl {
   
    @Autowired
    private UserService userService;
    public void addUser(){
   
        User user = new User();
        user.setId(111);
        user.setAge(2021);
        user.setName("jdjjjj");
        user.setSex("KKKKK");
        userService.addUser(user);
    }
}

5.创建配置类

package com.jt.demo11.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.jt.demo11")
public class SpringConfig {
   
}

6.创建测试类TestMVC

package com.jt.demo11;

import com.jt.demo11.config.SpringConfig;
import com.jt.demo11.controller.UserControl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestMVC {
   
    public static void main(String[] args) {
   
        ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfig.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan_xfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值