bean相关知识
-
@bean和@component参考: https://www.jianshu.com/p/3fbfbb843b63 https://segmentfault.com/a/1190000014119872 Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。 完成这两个动作有三种方式, 一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式 @Component 1.1 注解表明一个类会作为组件类,并告知Spring要为这个类创建bean,(@Controller,@Service, @Repository实际上都包含了@Component注解) @Bean 2.1 用在方法上,一般有返回值,@Bean注
-
Spring Bean 定义Bean 定义被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象。这些 bean 是由用容器提供的配置元数据创建的,例如,已经在先前章节看到的,在 XML 的表单中的 定义。bean 定义包含称为配置元数据的信息,下述容器也需要知道配置元数据:如何创建一个 beanbean 的生命周期的详细信息bean 的依赖关系上述所有的配置元数据转换成一组构成每个 bean 定义的下列属性。属性描述class这个属性是强制性的,并且指定用来创建 bean 的 bean 类。name这个属性指定唯一的 bean 标识符。在基于 XML 的配置元数据中,你可以使用 ID 和/或 name 属性来指定 bean 标识符。scope这个属性指定由特定的 bean 定义创建的对象的作用域,它将会在 bean 作用域的章节中进行讨论。constructor-arg它是用来注入依赖关系的,并会在接下来的章节中进行讨论。p
-
Spring Bean配置Spring Bean管理Spring的核心在于Ioc,我们上一篇已经提到了Ioc的概念,把对象的控制权较给容器来管理。在Spring中,凡是被Spring创建和管理的对象都叫做Bean。BeanSpring管理的Bean,一般是由你提供的配置来创建,如Java配置,注解配置,XML配置。在容器内部,这些Bean表现为BeanDefinition对象。Bean的配置基于XML的配置在xml中,我们可以更了解Bean的配置,一个配置案例如下:常见xml配置分别解说各个参数的作用:class: 要实例化的类。所谓的bean在内存中就是实例化后的对象。class指的是要实例化那个类。name: Bean的名称,便于记忆scope: 下面会提到constructor arguments: 构造器参数properties 属性autowiring模式,Bean依赖其它Bean时候的模式lazy-initialization 懒加载模式initialization 初始化方法destruction 销毁方法直接拿一个X
-
Spring基础(Bean)Spring基础(Bean) Bean配置项(常用) Id Class Scope Constructor arguments Properties Autowiring mode lazy-initialization mode Initialization/destruction method Bean的作用域 singleton:单例,指一个Bean容器中只存在一份 prototype: 每次请求(每次使用)创建新的实例,destroy方式不生效 request:每次http请求创建一个实例且仅在当前request内有效 session global session global session<br/> 例子(singleton与prototype) Bean的生命周期 ++Bean的定义——Be
bean相关课程
bean相关教程
- 2.bean 标签中的属性介绍 核心配置文件回顾<bean id="user" class="com.wyan.entity.User" ></bean> 在上面的代码中可以看到,在 bean 标签中有两个属性,一个是 id 一个是 class。那么在 bean 标签中都有哪些属性呢?属性列表学号姓名 id 定义的唯一标识 name 同 id 的意义一致 class 类 factory-bean 工厂对象 factory-method 工厂方法 init-method 初始化执行的方法 destroy-method 销毁执行的方法 scope 对象的作用域 lazy-init 懒加载 autowire 依赖注入 depends-on 依赖于某个实例疑问导出上述属性是配置 bean 标签中可以选择的属性,当然一般来讲,我们无需配置所有,可以根据自己的需求配置需要的属性信息,那么如何选择这些属性呢?
- 2.2 容器初始化 bean 对象动作 下面是从源码中粘贴的部分代码步骤阐述:对于我们而言 这些英文看起来很吃力… 放轻松大家,我们只关注对我们理解流程有用的代码:1 的位置:是准备刷新,那么 Spring 只是设置刷新的标记,加载了外部的 properties 属性文件;2 的位置:是准备 bean 工厂对象;3 的位置:这一步骤就加载了配置文件中的所有 bean 标签,但是并没有对他们进行实例化;4 的位置:完成此上下文的 bean 工厂的初始化,初始化所有剩余的单例 bean。(Spring 中默认加载的 bean 就是单例模式后面生命周期会讲)最后的位置:完成容器的刷新,也就是所有的 bean 初始化完成。 //这里粘贴一部分初始化代码的逻辑 帮助大家理解 // Instantiate all remaining (non-lazy-init) singletons. beanFactory.preInstantiateSingletons(); // Trigger initialization of all non-lazy singleton beans... //所有非懒加载的单例bean的触发器初始化。。。 for (String beanName : beanNames) { ...//省略循环的代码 }OK 上面就是加载配置文件后 Spring 框架做的所有事情,当然实际底层涉及的东西 更多,但是我们没有必要深究,毕竟我们是理解过程,不是追求实现。疑问导出:我们整理了 Spring 初始化 bean 对象的过程,那么如果容器中确实存在了 bean 的实例,我们是如何获取得到的呢?
- 2.2 生命周期流程概要 简单地来说,一个 Bean 的生命周期分为四个阶段:(1) 实例化(Instantiation)(2) 属性设置(populate)(3) 初始化(Initialization)(4) 销毁(Destruction)流程图如下:Spring 中 bean 的实例化过程:Bean 实例生命周期的执行过程如下:Spring 对 bean 进行实例化,默认 bean 是单例;Spring 对 bean 进行依赖注入;如果 bean 实现了 BeanNameAware 接口,Spring 将 bean 的 id 传给 setBeanName() 方法;如果 bean 实现了 BeanFactoryAware 接口,Spring 将调用 setBeanFactory 方法,将 BeanFactory 实例传进来;如果 bean 实现了 ApplicationContextAware 接口,它的 setApplicationContext() 方法将被调用,将应用上下文的引用传入到 bean 中;如果 bean 实现了 BeanPostProcessor 接口,它的 postProcessBeforeInitialization 方法将被调用;如果 bean 实现了 InitializingBean 接口,Spring 将调用它的 afterPropertiesSet 接口方法,类似地如果 bean 使用了 init-method 属性声明了初始化方法,该方法也会被调用;如果 bean 实现了 BeanPostProcessor 接口,它的 postProcessAfterInitialization 接口方法将被调用;此时 bean 已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用上下文被销毁;若 bean 实现了 DisposableBean 接口,Spring 将调用它的 distroy() 接口方法。同样地,如果 bean 使用了 destroy-method 属性声明了销毁方法,则该方法被调用;
- 4. 小结 本章节 带着大家梳理了一下 Spring 初始化 bean 和获取 bean 的流程:Spring 框架通过 ResourceLoader 加载项目的 xml 配置文件;读取 xml 的配置信息 变成对象存储,但未实例化;通过 bean 工厂处理器对 bean 做实例化,存储到一个 map 集合中默认是单例;获取对象 通过 xml 文件中 bean 的 id 从 map 集合中通过 get (key) 获取。罗马不是一天建成的 ,书山有路勤为径…
- 2.4 多级角色 有时候,一个角色可能涵盖了多种其他角色。例如:admin 可能包含 user 的权限,为实现这一功能,我们可能会为 admin 用户增加 user 角色。要实现这种配置,我们需要用到 RoleVoter 的扩展实现类,RoleHierarchyVoter。其配置方式如下:<bean id="roleVoter" class="org.springframework.security.access.vote.RoleHierarchyVoter"> <constructor-arg ref="roleHierarchy" /></bean><bean id="roleHierarchy" class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl"> <property name="hierarchy"> <value> ROLE_ADMIN > ROLE_STAFF ROLE_STAFF > ROLE_USER ROLE_USER > ROLE_GUEST </value> </property></bean>这个配置中出现了四种角色,ADMIN、STAFF、USER、GUEST,而这四种又有明显的包含于被包含关系,如此便可以使角色投票机制根据角色的层级进行决策。
- 3.3 JaasAuthenticationProvider JaasAuthenticationProvider 的使用默认的配置对象创建上线文对象 LoginContext。假设我们有一个 JAAS 认证的配置文件 /WEB-INF/login.conf,其内容如下JAASTest { sample.SampleLoginModule required;};和众多的 Spring Security bean 对象相同,JaasAuthenticationProvider 对象也通过 Spring 应用上下文配置,以下为通过 Spring 配置文件配置 JAAS 认证。<bean id="jaasAuthenticationProvider"class="org.springframework.security.authentication.jaas.JaasAuthenticationProvider"><property name="loginConfig" value="/WEB-INF/login.conf"/><property name="loginContextName" value="JAASTest"/><property name="callbackHandlers"><list><bean class="org.springframework.security.authentication.jaas.JaasNameCallbackHandler"/><bean class="org.springframework.security.authentication.jaas.JaasPasswordCallbackHandler"/></list></property><property name="authorityGranters"> <list> <bean class="org.springframework.security.authentication.jaas.TestAuthorityGranter"/> </list></property></bean>10.16.5. 启动 Subject如果配置完整,JaasApiIntegrationFilter 对象将在 JaasAuthenticationToken 对象中启动主题对象 Subject,并可通过以下形式获得:Subject subject = Subject.getSubject(AccessController.getContext());这种集成方式可以通过 jaas-api-provision 属性快速集成,当我们需要扩展 JAAS 主题时会被使用到。
bean相关搜索
-
back
backbone
background
background attachment
background color
background image
background position
background repeat
backgroundcolor
backgroundimage
background属性
badge
bash
basics
basis
bat
bdo
bean
before
begintransaction