1.概述:从Spring2.5开始就可以使用注解来配置依赖注入。而不是采用xml来描述一个bean连线,你可以使用相关类,方法或字段声明的注解,将bean配置移动到组件类本身。在XML注入之前进行注解注入,因此后者的配置将通过两种方式的属性连线别前者重写。注解连线在默认的情况下在Spring容器中打不开。因此,在可以使用基于注解的连线之前,我们将需要在我们的Spring配置文件中启用它。
名称 | 描述 |
@reuqired | @reuqired注解应用于bean属性的setter方法 |
@Autowired | @Autowired注解可以应用到bean属性的stter方法,非setter方法,构造函数和属性 |
@Qualifier | 通过制定确切的将被连线的bean,@Autowired和@Qualifier注解可以用来删除混乱。 |
JSR-250 Annotation | Spring支持JSR-250的基础的注解,其中包括了@resoure,@PostConstruct和predes |
1. @Required注释;
a) @Required注释应用于bean的属性的setter的方法,它表明受影响的bean属性的配置时必须放在XML配置文件中,否则容器就会抛出一个beanlnitiakizationException异常
2. @Autowired注释
a) @Autowired注释可以在setter方法中被用于自动连接Bean,就像@Autowired注释,容器,一个属性或者任意命名的可能带有多个参数的方法。当Spring遇到一个在stter方法中使用的@Autowired注释,它会在方法中视图执行byType自动连接
3. @Qualifier注释
a) 可以会有这样一钟情况,当你创建多个具有相同类型的bean时,并且想要一个属性只为它们其中一个进行装配,在这种情况下,使用@Qualifier注释和@Autwired注释来指定哪一个真正的bean将会被装配来消除混乱
4. @Resouce注释
a) 在字段中或者setter方法中使用@Resource注释,@Resource注释使用一个name属性,该属性以一个bean名称的形式被注入
5. @Configuration和@Bean注释:
a) 带有@Configuration的注释表示这个类可以使用Spring loC容器作为bean定义的来源。
b) @bean注解告诉Spring,一个带有@bean的注解方法将返回一个对象,该对象应该被注册为在Spring引用程序上下文中的bean
Spring事件处理
1. 概述:
c) 在我们之前的例子中,我们都是applicationContext,该容器负责管理bean中的生命周期,其实,当容器加载管理器的bean时会伴随着一系列的事件发生和处理,例如启动停止监听等
2. 专业词汇:
a) ContextStartedEvent容器启动
b) contextStoppedEvent容器停止
c) applicationEvent容器事件
d) ApplicationListener容器事件监视。
3. Spring内置标准事件
名字 | 内容 |
ContextRefreshedEvent | ApplicationContext被初始化或刷新时,该事件被发布。这也可以在ConfigurableApplicationContext接口中使用refresh()方法来发生 |
ContextStartedEvent | 当使用ConfigurableApplicationContext接口中的start()方法启动ApplicationContext时,该事件被发布。你可以调查你的数据库,或者你可以在接受这个事件后重启任何停止的应用程序 |
ContextStoppedEvent | 当使用ConfigurableApplicationContext接口中的stop()方法停止ApplicationContext时,该事件被发布,你可以在接受这个事件后做必要的清理工作 |
ContextClosedEvent | 当使用ConfigurableApplicationContext接口中的close()方法关闭ApplicationContext时,该事件被发布,一个已关闭的上下文达到生命周期末端:它不能被刷新或重启 |
RequstHandledEvent | 这是一个web-specific事件,告诉所有 bean HTTP请求已经被服务 |
4. 特别注意:
Spring的事件处理是单线程的,所以如果一个事件被发布直至并且除非所有的接受者得到的该消息,该进程被堵塞并且流程将不会继续