2016-3-11
spring是个轻量级框架,可以简发web开发步骤,可以替代传统的EJB技术。
IOC容器:Inversion of control;
通过反射的方式在IOC容器中创建bean,所以要求bean必须有无参的构造函数
主要接口ApplictionContext,
主要实现类ClassPathXmlApplicationContext(从类路径加载文件),
FileSystemXmlApplicationContext(文件系统加载文件)
autowire(自动装配),byName(按照bean名字和setName属性查找),byType(按照bean类型查找)
bean的作用域:scope
1.singleton(默认)只创建一次实例。
2.prototype每次请求都创建实例。
3.request(每次Http请求都会创建一个bean实例,只在WebApplicationContext有效),
4.session(每创建一个HttpSession就会创建一个bean实例,只在WebApplicationContext有效)
Spring SpEL
Spring 表达式语言(简称SpEL):是一个支持运行时查询和操作对象图的强大的表达式语言。
语法类似于 EL:SpEL 使用 #{…} 作为定界符,所有在大框号中的字符都将被认为是 SpEL
SpEL 为 bean 的属性进行动态赋值提供了便利
通过 SpEL 可以实现:
通过 bean 的 id 对 bean 进行引用
调用方法以及引用对象中的属性
计算表达式的值
正则表达式的匹配
字面量的表示:
整数:<property name="count" value="#{5}"/>
String 可以使用单引号或者双引号作为字符串的定界符号:<property name=“name” value="#{'Chuck'}"/> 或 <property name='name' value='#{"Chuck"}'/>
bean的生命周期
<bean init-method="" destroty-method="">
<!--导入属性文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- bean后置处理器 -->
<!--实现BeanPostProcessor接口并实现两个方法:
Object postProcessBeforeInitialization(Object bean, String beanName) init-method之前被调用
Object postProcessAfterInitialization(Object bean, String beanName) init-method之后被调用
配置 bean
配置形式:基于 XML 文件的方式;基于注解的方式;
Bean 的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean
<!--通过静态工厂方法来配置bean,注意不是配置静态工厂方法实例,而是配置bean实例
class:静态工厂全类名
factory-method:静态工厂方法
constructor-arg:如果静态工厂方法要传参数,使用constructor-arg来配置
-->
<bean id="car1" class="com.t.spring.beans.factory.StaticFactory"
factory-method="getFactory">
<constructor-arg value="audi"></constructor-arg>
</bean>
<!--工厂实例 -->
<bean id="carFactory" class="com.t.spring.beans.factory.InstanceFactory"></bean>
<!--实例工厂方法配置bean -->
<bean id="car2" class="com.t.spring.beans.factory.Car"
factory-bean="carFactory" factory-method="instanceFactory">
<constructor-arg value="ford"></constructor-arg>
</bean>
<!--通过FactoryBean配置bean实例,但实际返回的是getObject返回的实例 -->
实现FactoryBean接口
public class CarFactoryBean implements FactoryBean<Car> { private String brand; public void setBrand(String brand) { this.brand = brand; } @Override public Car getObject() throws Exception { // TODO 自动生成的方法存根 return new Car(brand,500000); } @Override public Class<Car> getObjectType() { // TODO 自动生成的方法存根 return null; } @Override public boolean isSingleton() { // TODO 自动生成的方法存根 return false; } }
<bean id="car" class="com.t.spring.beans.factorybean.CarFactoryBean">
<property name="brand" value="BMW"></property>
</bean>
(配置bean形式基于注解方式)
spring特定组件:@Component、@Controller、@Service、@Repository
对于扫描到的组件, Spring 有默认的命名策略: 使用非限定类名, 第一个字母小写. 也可以在注解中通过 value 属性值标识组件的名称
当在组件类上使用了特定的注解之后, 还需要在 Spring 的配置文件中声明 <context:component-scan> :
base-package 属性指定一个需要扫描的基类包,Spring 容器将会扫描这个基类包里及其子包中的所有类.
当需要扫描多个包时, 可以使用逗号分隔.
如果仅希望扫描特定的类而非基包下的所有类,可使用 resource-pattern 属性过滤特定的类,示例:
<context:component-scan base-package="com.t.spring.beans.annotation"
resource-pattern="repository/*.class">
</context:component-scan>
<context:include-filter> 子节点表示要包含的目标类
<context:exclude-filter> 子节点表示要排除在外的目标类
<context:component-scan> 下可以拥有若干个 <context:include-filter> 和 <context:exclude-filter> 子节点
<context:include-filter> 和 <context:exclude-filter> 子节点支持多种类型的过滤表达式:
类别:annotaion (常用)
示例:com.t.XxxAnnotation
说明:所有标注了XxxAnnotation的类。该类型采用目标类是否标注了某个注解进行过滤
类别:assignable (常用)
示例:com.t.XxxService
说明:所有继承或扩展XxxService的类。该类型采用目标类是否继承或扩展某个特定类进行过滤
类别:aspectj
示例:com.t..*Service+
说明:所有类名以Service结束的类及继承或扩展它们的类。该类型采用AspejctJ表达式进行过滤
类别:regex
示例:com.\t\.anno\..*
说明:所有com.t.anno包下的类。该类型采用正则表达式根据类的类名进行过滤
类别:custom
示例:com.t.XxxTypeFilter
说明:采用XxxTypeFilter通过代码的方式定义过滤规则。该类必须实现org.springframework.core.type.TypeFilter接口
组件扫描
<context:component-scan base-package="com.t.spring.beans.annotation"
</context:component-scan>
相关属性:
<context:component-scan resource-pattern="repository/*.class" />
type=annotation
<!--排除指定的annotation组件 -->
<context:component-scan base-package="" >
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan> -->
<!--包含指定的annotation组件 需要加上属性use-default-filters="false" 并且为false -->
<context:component-scan base-package="com.t.spring.beans.annotation" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan> -->
type=assignable
<context:component-scan base-package="com.t.spring.beans.annotation" use-default-filters="false">
<context:include-filter type="assignable" expression="com.t.spring.beans.annotation.repository.UserRepository"/>
</context:component-scan>
<context:component-scan base-package="com.t.spring.beans.annotation" >
<context:exclude-filter type="assignable" expression="com.t.spring.beans.annotation.repository.UserRepository"/>
</context:component-scan>
相关推荐
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
尚硅谷Spring6的笔记
本笔记将深入探讨Spring Data JPA的核心概念、功能以及如何在实际项目中应用。 首先,我们需要理解JPA的概念。JPA是Java平台上的一个标准,用于管理关系数据库中的数据。它提供了一种面向对象的方式来操作数据库,...
Spring Cloud 学习笔记 本笔记主要介绍了从单体架构到微服务架构的演变过程,以及 Spring Cloud 中的微服务架构搭建。下面是本笔记的详细知识点总结: 一、单体架构 单体架构是指整个系统只有一个工程,打包往往...
Spring Boot 进阶笔记 Spring Boot 是由 Pivotal 团队提供的全新框架,旨在简化 Spring 应用的初始搭建和开发过程。它使用 “约定大于配置” 的理念,让项目快速运行起来。 Spring Boot 设计的目的是让开发者尽可能...
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
狂神springcloud学习笔记加代码 笔记可以看:https://www.kuangstudy.com/bbs/1374942542566551554#header4 视频链接:https://www.bilibili.com/video/BV1jJ411S7xr
马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...
Spring的AOP模块支持声明式事务管理,开发者只需在配置中声明事务规则,无需在业务代码中显式处理事务开始、提交或回滚,降低了事务管理的复杂度。 八、Spring测试 Spring提供了丰富的测试支持,包括单元测试和集成...
Spring Cloud是一套微服务架构下的分布式系统解决方案,提供了在分布式系统环境下快速构建一些常见模式的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...
Spring学习笔记( spring视频笔记)
Spring6学习笔记,师承老杜
spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记...
Spring全家桶是企业级应用开发中广受欢迎的解决方案,它包括了一系列的模块和工具,可以覆盖从表现层到业务层再到持久层的整个开发周期。Spring框架的核心特性包括轻量级、控制反转(IoC)、面向切面编程(AOP)、...
【尚硅谷周阳老师SpringCloud笔记】是一份深入学习SpringCloud技术体系的教程资源,由知名教育机构尚硅谷的周阳老师编撰。SpringCloud作为微服务架构的重要框架,广泛应用于现代企业的分布式系统开发中。这份笔记...
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
动力节点老杜Spring6配套笔记主要讲解了Spring框架的一些核心概念和最佳实践,特别是针对代码设计中的开闭原则(Open-Closed Principle, OCP)进行了深入探讨。在给出的代码示例中,我们可以看到一个简单的用户登录...
Spring框架是Java开发领域中的一个核心支柱,以其强大的功能和灵活性深受开发者喜爱。Spring的核心理念是依赖注入...在阅读过程中,做笔记是非常重要的,可以帮助理解和记忆,同时也可以作为未来解决问题的参考资料。
Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc
spring-IOC的一些笔记心得