Java Web之Spring核心之IOC的解析和实战以及bean的使用

简介: Java Web之Spring核心之IOC的解析和实战以及bean的使用

前言


Spring是一个开源框架 它能够降低开发企业应用程序的复杂性 它以IOC(控制反转)和AOP(面向切面编程)两种先进的技术为基础 完美地简化了企业级开发的复杂度


一、Spring的简介和获取

image.png

Spring有七大模块


1:核心模块


Spring Core模块是Spring的核心容器 它实现了IOC模式 提供了Spring框架的基础功能,在模块中包含最重要的BeanFactory类是Spring的核心类  负责对JavaBean的配置与管理


2:Context模块


Spring Context模块继承BeanFactory类并且添加了事件处理 国际化 资源装载 透明装载等功能


3:AOP模块


Spring集成了所有AOP功能 通过事务管理可以使任意Spring管理的对象AOP化


4:DAO模块


提供了JDBC的抽象层 简化了数据库厂商的异常错误


5:O/R模块


提供了对现有ORM框架的支持


6:Web模块


Spring Web模块建立在Spring Context基础之上 它提供了Servlet监听器的Context和Web应用的上下文


7:MVC模块


Spring Web MVC模块建立在Spring核心功能之上 使得它拥有Spring框架的所有特性


Spring的获取


Spring官网


Spring内置了日志组件log4.jar 所以在正式使用Spring之前需要对log4j进行简单的配置


在项目的src根目录下创建log4j.properties属性文件 代码如下

log4j.rootLogger=WARN,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d%p[[%c]-%m%n


Spring配置结构如下

1666442551939.jpg

使用BeanFactory管理Bean


以装载Bean为例 代码如下

Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(resource);
Test test=(Test)factory.getBean("test");


AplicationContext的应用


在Spring中大多采用AplicationContext容器来开发企业级的程序 接下来介绍它的三个实现类


1:ClassPathXmlApplicationContext类


它从当前类路径中检索配置文件并装载它来创建容器的实例

ApplicationContext context=new ClassPathXmlApplicationContext(String configLocation);


2:FileSystemXmlApplicationContext类


它和上面的区别在于读取Spring配置文件的方式 它不再从类路径中获取配置文件 而是通过参数指定配置文件的位置

ApplcationContext context=new FileSystemXmlApplicationContext(String configLocation);


3:WebApplicationContext类


它是Spring的Web应用容器


二、依赖注入与IOC


什么是控制反转与依赖注入?


IOC 控制反转 它使程序组件或类之间尽量形成一种松耦合的结构,开发者在使用类的实例之前,需要先创建类的实例,但是IOC将创建实例的任务交给IOC容器,这样开发应用代码时只需要直接使用类的实例 这就是IOC


依赖注入有三种形式 Spring支持后两种


1:接口注入


基于接口将调用与实现分离


2:Setter注入


基于JavaBean的Setter方法为属性赋值 在实际开发中得到了最广泛的应用

public class User{
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}


3:构造器注入


基于构造方法为属性赋值 容器通过调用类的构造方法 将其所需的依赖关系注入其中

public class User{
private String name;
public User(String name){
this.name=name;
}
}


bean的配置


<bean id="test" class="com.mr.Test"/>

id属性为bean的名称 class属性为对应的类名

引用其他的bean


在Spring中可以通过配置文件使用<ref>元素引用其他的JavaBean的实例对象

<ref local="user"/>


三、自动装配


<bean>元素的autowise属性负责自动装备<bean>标签定义的JavaBaen的属性 这样做可以省去很多配置JavaBean属性的标签代码


1:按Bean名称装配


<bean>元素的byname属性以属性名区分自动装配,在容器中寻找与JavaBean的属性名相同的JavaBean并将其自动装配到JavaBean中

<bean auotwise="byName" id="printInfo" class="com.mr.user.PringInfo"/>


2:按bean类型装配


Spring以bean类型区分自动装配 容器会自动寻找与JavaBean属性类型相同的JavaBean的定义 并将其注入到需要自动装配的JavaBean中

<bean auotwise="byType" id="printInfo" class="com.mr.user.PringInfo"/>


四、bean的作用域


在Spring中,那些组成应用的主题及由Spring IOC容器所管理的对象被称为bean,简单地讲,bean就是由Spring容器初始化,装备及被管理的对象


1:singleton的作用域


当Spring中一个bean作用域为singleton时,那么Spring IOC容器中只会存在一个共享的该bean实例,并且所有对该bean的引用 只要id与该bean定义相匹配,则只会返回bean的单一实例

1666442741460.jpg

<bean id="test" class="com.mr.Test"/>
<bean id="test" class="com.mr.Test"/ singleton="true"/>
<bean id="test" class="com.mr.Test"/scope="singleton"/>


2:prototype作用域


prototype作用域的bean会导致在每次对该bean请求时都会创建一个新的bean实例,


对所有有状态的bean应该使用prototype作用域 无状态的bean应该使用singleton作用域

1666442775475.jpg

<bean id="test" class="com.mr.Test" singleton="false"/>
<bean id="test" class="com.mr.Test" scope="prototype"/>


相关文章
|
9月前
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
|
9月前
|
XML Java 数据格式
《深入理解Spring》:AOP面向切面编程深度解析
Spring AOP通过代理模式实现面向切面编程,将日志、事务等横切关注点与业务逻辑分离。支持注解、XML和编程式配置,提供五种通知类型及丰富切点表达式,助力构建高内聚、低耦合的可维护系统。
|
9月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
10月前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
1244 0
|
10月前
|
Java 数据库 数据安全/隐私保护
Spring Boot四层架构深度解析
本文详解Spring Boot四层架构(Controller-Service-DAO-Database)的核心思想与实战应用,涵盖职责划分、代码结构、依赖注入、事务管理及常见问题解决方案,助力构建高内聚、低耦合的企业级应用。
1812 1
|
10月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
834 1
|
10月前
|
缓存 安全 Java
Spring Security通用权限管理模型解析
Spring Security作为Spring生态的核心安全框架,结合RBAC与ACL权限模型,基于IoC与AOP构建灵活、可扩展的企业级权限控制体系,涵盖认证、授权流程及数据库设计、性能优化等实现策略。
716 0
|
10月前
|
缓存 安全 Java
Spring Security权限管理解析
Spring Security是Spring生态中的核心安全框架,采用认证与授权分离架构,提供高度可定制的权限管理方案。其基于过滤器链实现认证流程,通过SecurityContextHolder管理用户状态,并结合RBAC模型与动态权限决策,支持细粒度访问控制。通过扩展点如自定义投票器、注解式校验与前端标签,可灵活适配多租户、API网关等复杂场景。结合缓存优化与无状态设计,适用于高并发与前后端分离架构。
708 0
|
10月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
2982 0
|
10月前
|
存储 安全 Java
如何在 Spring Web 应用程序中使用 @SessionScope 和 @RequestScope
Spring框架中的`@SessionScope`和`@RequestScope`注解用于管理Web应用中的状态。`@SessionScope`绑定HTTP会话生命周期,适用于用户特定数据,如购物车;`@RequestScope`限定于单个请求,适合无状态、线程安全的操作,如日志记录。合理选择作用域能提升应用性能与可维护性。
411 1

热门文章

最新文章

推荐镜像

更多
  • DNS