spring视频笔记

课程内容
1. 框架
2. Ioc
3. Bean
4. Aop(aspectj,api)
Aspectj是aop的使用实现
Springframework
1. spring expression language(spel)
2. spring integration
3. spring web flow
4. spring security
5. spring data
6. spring batch
资料
http://spring.io/
http://projects.spring.id/spring-framework/
spring概况
一个轻量级控制反转(ioc)和面向切面(aop)容器
1. 大小和开销都是轻量级的
2. 通过控制反转实现松耦合
3. 面向切面的支持,可以通过分离业务逻辑与系统级服务进行内聚性开发
4. 作为容器管理对象的配置和声明周期
5. 组件的配置和组合
Spring的优点
1. 开发简单
2. 开发方便
3. 开发快捷
Spring结构
核心容器
1. Beans
2. core
3. context
4. spel
技术
1. aop
2. apects
3. instrumentation
4. messaging
web组件
1. websocket
2. servlet
3. web
4. porlet
data access/integration
1. jdbc
2. orm
3. oxm
4. jms
5. transactions
什么是框架
规则,即使用别人搭好的舞台
框架的特点
1. 半成品
2. 特定的处理流程和控制逻辑
3. 不断更新
框架和类库的区别
1. 框架是封装了逻辑,高内聚的,类库是松散的工具组合
2. 框架专注于某一领域,类库则更通用

Ioc
1. 接口面向接口编程
2. 什么是ioc
3. Spring的bean配置
4. Bean的初始化
5. Spring的常用注入方式
什么是接口
实体给外界提供的抽象化说明
Java8中接口可以有方法体
Java中接口即声明

面向接口编程
结构设计中,分清层次,及调用关系
每层只向外界提供接口,各层依赖接口而不是实体类
接口实现的变动不影响各层之间的调用
面向接口编程中接口用于隐藏具体实现,实现组件的多态性

什么是ioc
应用程序不负责对象的创建和维护,而是由外部容器
DI(依赖注入)是其中的一种实现方式
目的:创建对象并且组装对象之间的关系
控制反转:
获得依赖对象的过程被反转了,由自身管理变成了由IOC容器主动注入,动态的将某种依赖关系注入到对象中

Spring的bean配置
1. xml文件中配置类
2. 通过Spring的工具类读取读取配置文件
3. Context借助getBean方法获取给用户提供类
Spring的单元测试
1. 下载junit-*.jar
2. 创建UnitTestBase类
3. 完成对Spring配置文件的加载和销毁
4. 所有单元测试类都继承UnitTestBase,通过它的getBean方法获取想要的对象
5. 具体执行单元测试,通过添加注解
@RunWith(BlockJUnit4ClassRunner.class)
6. 单元测试方法加注解
@Test
7. 运行

Bean容器的初始化
基础:两个包
1. org.springframework.beans
2. org.springframework.context
3. Beanfactory提供配置结构和基本功能,加载并初始化Bean
4. ApplicationContext保存了Bean对象并在Spring中被广泛使用
初始化ApplicationContext方式
本地文件—磁盘绝对路径
Classpath—相对工厂的相对路径
Web应用中依赖servlet或者listener

Spring注入
指在启动spring加载bean配置时,完成对变量赋值的行为
常用的注入方式
1. 设指注入
2. 构造注入
设指注入
Xml文件在配置bean类的过程中通过property标签完成注入
把一个对象作为属性放在另一个类中
构造注入
构造注入的配置形式和设指注入相似,只是前者通过构造器传入对象,并赋值给类属性
而后者则通过set方法给类属性赋值
?设指注入和构造注入new对象的过程

Bean
1. bean配置项
2. bean的作用域
3. bean的生命周期
4. bean的自动装配
5. resource&rescourceloader

bean的配置项
1. id
2. class
3. scope
4. constructor arguments
5. properties
6. autowiring mode
7. lazy-initialization mode
8. initialization/destruction method

bean的作用域
singleton:单例,指一个bean容器只存在一份(默认模式)
bean加载一次xml配置文件容器清空,又是一个新的容器
prototype:每次请求(请求一个对象)创建新的实例
request:每次http创建一个类,并只有在该次请求有效
session:类似request
global session:基于portlet的web中有效

bean的生命周期:bean被创建使用过后就会被销毁
生命周期
1.定义
2.初始化
3.使用
4.销毁
初始化:
方法一
(1) 实现org.springframework.beansfactory.initializingbean接口,
(2) 覆盖afterpropertiesset方法
方法二
配置init-method方法
Bean的销毁
方法一
实现org.springframework.beamsfactory.DisposableBean接口,覆盖destory
方法二
配置destroy-method方法
方法三:配置全局默认初始化,销毁方法
从而可以在bean产生和销毁之后进行一些操作
三种方法的比较
1.第三种方法可以被另外两种方法覆盖掉
2.第一种方法优于第二种方法执行
3.第三种方法可以不在bean种生命
4.第一种和第二种方法一旦在配置文件中配置必须在bean中写相应的方法
Bean生命周期
Spring的aware接口
Spring中提供了以aware结尾德接口

  1. Applicationcontextaware
  2. Applicationeventpulisheravware
  3. Messagesourceaware
    Beannameaware接口实现重写setBeanName()方法,可以通过接口的name属性获得当前类的id,进而可以通过该i获取类对象
    Applicationaware接口实现重写setApplicationContext()方法,可以给appliction注入类

bean的自动配置(autowiring)
1. No:不做任何操作
2. Byname:根据属性名自动配置。根据属性名自动配置,此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
3. ByType:如果容器中存在一个与指定属性类型相同的bean
,那么将于该属性自动配置,如果存在多个该类型bean,那么抛出异常,并指出不能使用bytype方式进行自动装配,如果没有找到相匹配的bean,则是什么事都不发生
4. Constructor与bytype方式类似,不同之处在于它应用与构造器参数,如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常
Byname配置:
1. 在xml文件中配置自动配置方式为byname方式
2. 引用类中设置类属性,属性名和被引用类的id一致,并提供set方法
3. 不用new被引用类直接调用引用类属性方法
Bytype配置
1. 在配置文件中配置自动配置方式为bytype方式
2. 类中设置类属性,提供该类型属性的构造器
3. 不用new被引用类直接调用引用类属性方法
4. 首先尝试使用constructor来自动装配,然后再使用byType方式

Resources
针对与资源文件的统一接口
Resourcesloader
Urlresource:url对应的资源,根据一个url地址即可构建
Classpathresource:获取类路径下的资源文件
Filesystemresource:获取文件系统里面的资源
Servletcontextresource:servletcontext封装的资源
Inputstreanresource:针对输入流封装的资源
Bytearrayresource:针对于字节数组封装的资源

所有的application都实现了Resourceloader接口可以通过getResource()方法实例化Resource
四种形式:

Prefix: example explanation

Classpath classpath:com/myapp 相对路径
File file:data/config.xml 文件夹系统
http url:http://myserver/login.jsp url
(none) /data/config.xml 依赖applicationcontext
Rescource 有getfilename方法
有 getlength方法

Bean管理的注解实现及例子
Classpath扫描与组件管理
类的自动检测与注册bean

@Component,@Respository,@Service,@Controller
@Required
@Autowired
@Qualifier
@Resource
从spring3.0开始可以通过java来定义bean而不是xml
比如:
@Configuration,@Bean,@Import,@DependsOn
@Component是一个同于注解,可用于任何bean
@Respository,@Service,@Controller是更有针对性的注解
@Respository通常用于注解Dao类,即持久层
@Service通常用于注解Service类,即服务层
@Controller通常用于Controller类,即控制层
Spring可以自动检测类并注册bean到applicationcontext(请注意包含上下文命名空间)
仅会查找在同一个applicationContext中的bean注解
包含
通常在使用前者后,不用在使用后者,前者处理类,后者处理类中的属性和方法
的base-package属性可以把某个包下的所有类加载进去
也包含autowiredAnnotationBeanPostProvessor和CommonAnnotationbeanPostProcessor也会被包含进来
默认情况下,类被自动发现并注册bean的条件是:
方式1使用@Component,@Resository,@Service,@Controller注解
方式2使用@component的自定义注解

使用过滤器进行自定义扫描

还可以使用use-default-filers = ‘false’禁止自动发现与注册

自定义Bean
扫描过程中组件被自动检测,那么bean名称是由
Beannamegenerator生成的(@Component,@Repository@Service,@Controller都会有一个name属性用于显示设置bean name)
注意这里的名称也就是bean的id相当于xml文件中的id属性,也可以自动生成默认以类的全拼为id(首字母小写)

可自定义bean命名策略
1.实现beannamegenerator接口
2.并一定要包含一个无参的构造器,
3.在配置文件中指定命名策略的实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 很抱歉,我是AI语言模型,无法回答关于“狂神说springsecurity笔记”的问题。但我可以告诉你,Spring Security是一个基于Spring框架的安全框架,用于保护Web应用程序。它提供了身份验证、授权、攻击防护等功能,可以帮助开发人员构建安全可靠的Web应用程序。狂神是一位知名的Java技术博主,他在自己的博客和视频中分享了很多关于Spring Security的知识和经验。如果你想学习Spring Security,可以参考他的笔记和教程。 ### 回答2: Spring Security 是一个强大的开源安全框架,用于保护 Spring 应用程序。它提供了一系列的安全服务,例如身份验证(Authentication)、授权(Authorization)、密码加密、会话管理等。 狂神在他的 Spring Security 笔记中详细介绍了该框架的使用方式和相关概念。首先,他解释了身份验证的重要性,提及了不同的身份验证方法,如基于表单的认证、基于记住我(Remember Me)的认证以及基于 HTTP Basic 和 Digest 验证等。他还介绍了如何自定义认证过程和处理认证失败的方法。 其次,狂神介绍了授权的概念和不同的授权方式。他解释了基于角色(Role)的访问控制和基于资源(Resource)的访问控制,并示范了如何在 Spring Security 中实现这些授权方式。他还介绍了如何使用注解和表达式来简化授权配置。 此外,狂神还介绍了 Spring Security 提供的其他功能,如密码加密、会话管理、防止跨站点请求伪造(CSRF)攻击等。他指导读者如何使用这些功能来增强应用程序的安全性。 总的来说,狂神的 Spring Security 笔记对于初学者来说是一个很好的入门指南。他提供了丰富的示例代码和详细解释,让读者可以很容易地理解和使用 Spring Security。无论是开发 Web 应用程序还是企业级应用程序,掌握 Spring Security 都是非常重要的,狂神的笔记提供了一个很好的起点。 ### 回答3: spring security 是一个开源的安全框架,可以为应用程序提供身份验证和授权管理的功能。它基于 JavaEE 标准认证和授权机制,并提供了一套更灵活的安全性管理机制。 首先,Spring Security 实现了用户认证的功能,可以通过多种认证方式来验证用户的身份,包括基于数据库的认证、LDAP 认证、OAuth2 认证等。可以根据具体的需求选择使用不同的认证方式。 其次,Spring Security 提供了授权管理的功能,可以设置不同的权限角色,对不同的用户进行授权。可以通过配置的方式进行权限的控制,通过注解或者编程的方式进行细粒度的控制,可以灵活地满足不同的应用需求。 另外,Spring Security 还提供了许多其他的安全支持功能,如防止 CSRF 攻击、防止点击劫持、防止 SQL 注入等。它还支持与其他框架的集成,如与 Spring Boot、Spring MVC 的集成,可以方便地在现有的应用中集成安全功能。 Spring Security 的架构清晰,易于理解和使用。它的设计模式和扩展机制可以满足不同级别的定制需求,使得我们可以根据实际情况来灵活地进行使用和扩展。同时,Spring Security 还提供了丰富的文档和示例代码,方便开发者学习和使用。 总之,Spring Security 是一个功能强大且灵活的安全框架,可以在应用程序中实现身份验证和授权管理的功能。通过使用 Spring Security,我们可以有效地保护和管理我们的应用程序,提升系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值