对于spring的看法觉得spring就相当于一个容器似的,可以装很多bean,然后对那些bean进行管理,首先是配置bean,我们可以这样写<bean id="xxx" class="xxx.xxx.xxx"/>其中id是唯一的。我们还可以给bean指定别名:<alias name="xxxx" alis="xx"/>,配置好了bean,我们就要先初始化他们,然后去调用它们,初始化呢,我们有三种方法,第一:构造器,第二:静态工厂,第三:实例工厂。然后我们调用bean,Resoruce resource = new FileSystemResource("bean.xml") BeanFactory beanFactory=new XmlBeanFactory(resource);
这样我们就可以获取到在xml文件中配置的bean了。或者用applicationContent来获取:
ApplicationContent content = new ClassPathXmlApplicationContent("applicationContent.xml");
BeanFactory beanFactory = content;
得到了beanFactory以后就可以获取到你想到得到的bean。
在实例化bean的时候,如果要用到static工厂方法那么在<bean factory-method="createInstance"/>bean标签中中一定要使用factory-method属性。
在bean中要有一个static方法例如:
class ExampleBean(){
private ExampleBean(Abean abean,Bbean bbean){
this.abean = abean;
this.bbean = bbean;
};
public static ExampleBean createInstance(Abean abean,Bbean bbean){
ExampleBean bean = new ExampleBean(abean,bbean);
return bean;
}
}
以上就是static工厂实例化bean方法。在配置文件中配置bean的时候我们可以在bean中加一个属性<idref = "beanId"/>这个属性可以验证在调用这个bean的时候这个bean是否存在。
关于注入有几种:set,get注入(同时配置文件要有bean注入配置),构造器注入(同上)。
<ref>标签是用来引用其他bean,内部bean则用<bean><property><bean/></property></bean>标签。注入list,map,set。后来出现自动注入@Autowired.
bean的作用域包括(singleton,prototype,request,session,global session)
如果你打算用一个作用域为request的baen注入到其他bean中,那么需要注入一个aop代理来替代被注入的作用域bean,也就是说,你需要注入一个代理对象,该对象具有与被代理对象一样的公共接口,而容器则可以足够智能的从相关作用域中(比如一个HTTP request)获取到真实的目标对象,并把方法调用委派给实际的对象。(这个理解不是很透彻)。
我们经常用ApplicationContext,但是ApplicationContext到底是什么?
beans包是对bean的管理,ApplicationContext则是以一种更加面向框架的方式增强了BeanFactory的功能。context包核心是ApplicatonContext接口由于ApplicationContext是由BeanFactory派生而来的所以ApplictionContext具有BeanFactory所有的功能。
spring国际化消息,可以自定义MessageSource或者是spring中的org.springframework.context.support.ResourceBundleMessageSource那么必须有属性文件在可以为list集合多个属性文件。获取国际化消息有三种方式:
String getMessage(String code, Object[] args, String default, Locale loc):用来从MessageSource获取消息的基本方法。如果在指定的locale中没有找到消息,则使用默认的消息。args中的参数将使用标准类库中的MessageFormat来作消息中替换值。
String getMessage(String code, Object[] args, Locale loc):本质上和上一个方法相同,其区别在:没有指定默认值,如果没找到消息,会抛出一个NoSuchMessageException异常。
String getMessage(MessageSourceResolvable resolvable, Locale locale):上面方法中所使用的属性都封装到一个MessageSourceResolvable实现中,而本方法可以指定MessageSourceResolvable实现。
注解:
@Autowired可以注解属性,方法,set,map(key为String类型,values为已知类型),构造器字段.
对于spring对classpath的扫描,我们可以用@component注解,@Repository,@service,@controller是对@component的细化,@Scope可以注解bean的作用域,如果要自定义检测bean名称策略,那么就要实现beanNameGenerator,自定义作用域那么要实现scopeMetadataResolver,注解元数据那么要用到@qualifiter("")等。
spring Validator :
实现validator接口,然后用rejectValue();来返回错误,然后用<spring:bind>来显示错误。
自定义转化,要继承PropertyEditorSupport或者实现PropertyEditorRegistrar ,然后在配置文件中注册这个转化<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="example.ExoticType">
<bean class="example.ExoticTypeEditor">
<property name="format" value="upperCase"/>
</bean>
</entry>
</map>
</property>
</bean>
面向切面:
spring aop 两种代理机制,一个是jdk代理,一个是cglib代理
启动@AspectJ支持,<aop:aspectj-autoproxy/>然后就可以自定义aopbean
并且切入点表达式使用@Pointcut注解来表示(作为切入点签名的方法必须返回void 类型)。
关于切面注解匹配:@execution,@within,@target(目标bean),@annotation,@args,this
(代理bean)声明通知:@before,@afterReturnning(可以有返回值参数),@afterReturnningThrowing(可以有抛出什么异常的参数),@after,@around,@agrs("")(传递参数),
分享到:
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...
在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...
在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...
spring-framework-3.2.18.RELEASE-Gradle编译无误-可直接导入eclipse查看。已使用Gradle编译成eclipse项目的spring源码,版本是3.2.18。可以直接导入eclipse中,导入法方法可参看:...
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
Spring 详细讲解 Spring 是一个功能强大且功能齐全的 Java 应用程序框架,提供了一个通用的基础结构来支持开发企业级应用程序。 Spring 框架的核心是控制反转(IoC)和依赖注入(DI)模式,它们使得应用程序更加...
Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...
介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...
《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...
《Spring AI Core 0.8.1:开启人工智能之旅》 在现代软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java开发中的首选框架之一。而Spring AI Core则是Spring生态系统中专门为人工智能(AI)和机器学习...