Javaweb的三层架构

本文介绍了三层架构(Controller、Service、DAO)的概念,强调了分层解耦的重要性,以及内聚和耦合的度量标准。此外,详细讲解了控制反转(IoC)和依赖注入(DI)在Spring框架中的应用,包括如何使用@Component、@Controller、@Service、@Repository注解声明和扫描Bean,以及如何通过@Autowired、@Primary、@Qualifier和@Resource解决多实例问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三层架构是指

                1.Controller层(控制层):接受请求,响应数据(接受前端发送的请求,对请求进行处理,并且响应数据)

                2.Service层(业务逻辑层,处理具体的业务逻辑):逻辑处理。

                3.DAO层(数据访问层(持久层)):负责数据访问操作(也叫Mapper层),包括数据的增删改查,可以是数据库,文件,或者其他的Api接口。

分层解耦:

        内聚:软件中各个功能模块内部的功能联系。

        耦合:衡量软件中各个层/模块之间的依赖,关联的程度。

        软件设计原则:高内聚低耦合。

        控制反转:简称IOC,对象的创建控制权由程序本身转移到外部(容器),这种思想称为控制反转。

        依赖注入:简称DI,容器为应用程序提供运行时,所 依赖的资源,称之为依赖注入。

        Bean对象:IOC容器中创建,管理的对象,称之为Bean

操作:

        Service层和DAO层的实现类交给IOC容器对象需要在类上面加上@Component (将当前类交给IOC容器管理,成为IOC容器的Bean)

        依赖注入只要在用到的类上加上@Autowired(运行时,IOC容器会提供该类型的bean对象,并赋值给该变量--依赖注入)

IOC:

        Bean的声明:

                要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:

                1.Component(声明bean的基础注解),不属于以下三类时,用这个注解。

                2.Controller(@Component的衍生注解)标注在控制器类上。

                3.Service(@Component的衍生注解),标注在业务层上。

                4.Repository(@Component的衍生注解),标注在数据访问层类上(由于和mybatis整合,用的很少)

                (RestController等于Controller+ResponseBody)

                注意:声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。

                        使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller

                

                Bean组件扫描:

                                前面声明bean的四大注解,要想要生效,还需要被组件扫描注解@ComponentScan扫描,@ComponentScan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围时启动类所在包及其子包。

DI详解:

@Autowired注解,默认是按照类型进行的,如果存在多个相同类型的bean,将会报出错误。

        可以通过以下几种方式来解决。

                1.Primary,在@Component类型的注解处加上@Primary。

                2.Qualifier(),在@Autowired下加上@Qualifier表明具体是哪一个bean。

                3.Resource,取代@Autowired,并且用name属性标明具体哪一个bean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值