Spring系列6:spring注解,springMVC注解,springboot注解,

依赖注入DI有4种方式:
接口注入
setter注入
构造器注入
注解注入html

Spring注解注入

原文:http://www.javashuo.com/article/p-vvbomzgm-ec.htmljava

不须要在Spring配置文件中声明Bean实例,但要在原有的基础上进行如下3个改变:程序员

  1. 导入AOP的Jar包。注解的后台实现用到了AOP编程
  2. 更换配置文件头,添加相应的约束
  3. 在Spring配置文件中配置组件扫描器,用于在指定的基本包中扫描注解。


### 一、 定义Bean@Component
在类上使用注解@Component,该注解的value属性用于指定该bean的id值。

另外,Spring还提供了3个功能基本和@Component等效的注解:
 @Repository 用于对DAO实现类进行注解
 @Service 用于对Service实现类进行注解
 @Controller 用于对Controller实现类进行注解
之因此建立这三个功能与@Component等效的注解,是为了之后对其进行功能上的扩展,使它们再也不等效。web

二、 Bean的做用域@Scope

在类上使用注解@Scope,其value属性用于指定做用域。默认为singleton。
spring

@Scope注解的做用详解

@Scope默认是单例模式,即scope="singleton"。编程

另外scope还有prototype、request、session、global session做用域。scope="prototype"多例服务器

  • 1.singleton单例模式,

   全局有且仅有一个实例session

  • 2.prototype原型模式,

   每次获取Bean的时候会有一个新的实例app

  • 3.request  

        request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,测试

  • 4.session 

         session做用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效

  • 5.global session

         global session做用域相似于标准的HTTP Session做用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被全部构成某个 portlet web应用的各类不一样的portlet所共享。在global session做用域中定义的bean被限定于全局portlet Session的生命周期范围内。若是你在web中使用global session做用域来标识bean,那么web会自动当成session类型来使用。

 

request、session、global session使用的时候首先要在初始化web的web.xml中作一些配置:请参考原文
————————————————
原文连接:https://blog.csdn.net/tzbugs/...

三、 基本类型属性注入@Value

在属性上使用注解@Value,该注解的value属性用于指定要注入的值。
使用该注解完成属性注入时,类中无需setter。固然,若属性有setter,则也可将其加到setter上。

四、按类型注入域属性@Autowired,@Autowired是spring的注解

须要在域属性上使用注解@Autowired,该注解默认使用按类型自动装配Bean的方式。
使用该注解完成属性注入时,类中无需setter。固然,若属性有setter,则也可将其加到setter上。

五、按名称注入域属性@Autowired与@Qualifier

须要在域属性上联合使用注解@Autowired与@Qualifier。@Qualifier的value属性用于指定要匹配的Bean的id值。一样类中无需setter,也可加到setter上。

@Autowired还有一个属性required,默认值为true,表示当匹配失败后,会终止程序运行。若将其值设置为false,则匹配失败,将被忽略,未匹配的属性值为null。

六、域属性注解@Resource,也就是说@Resource是java自带的注解

Spring提供了对JSR-250规范中定义@Resource标准注解的支持。@Resource注解既能够按名称匹配Bean,也能够按类型匹配Bean。使用该注解,要求JDK必须是6及以上版本。
(1)按类型注入域属性
@Resource注解若不带任何参数,则会按照类型进行Bean的匹配注入。

(2)按名称注入域属性
@Resource注解指定其name属性,则name的值即为按照名称进行匹配的Bean的id。

七、Bean的生命始末@PostConstruct与@PreDestroy

在方法上使用@PostConstruct,与原来的init-method等效。在方法上使用@PreDestroy,与destroy-method等效。

八、使用JavaConfig进行配置(替代的是applicationContext.xml)

JavaConfig,是在Spring 3.0开始从一个独立的项目并入到Spring中的。JavaConfig能够当作一个用于完成Bean装配的配置文件,只不过是程序员使用Java本身编写的。

9.使用junit4测试Spring

建立一个普通POJO类做为测试类。
须要在三个位置添加注解。
 在类头添加两个注解:
@RunWith(SpringJUnit4ClassRunner.class):用于指定运行环境
@ContextConfiguration(locations=“”):用于指定配置文件位置
将要测试的对象声明为成员变量,并在其头上添加注解。

总结:注解与XML共同使用注解的好处是,配置方便,直观。但其弊端也显而易见:以硬编码的方式写入到了Java代码中,其修改是须要从新编译代码的。
XML配置方式的最大好处是,对其所作修改,无需编译代码,只需重启服务器便可将新的配置加载。

若注解与XML同用,XML的优先级要高于注解。这样作的好处是,须要对某个Bean作修改,只需修改配置文件便可。固然,此时,Bean类要有setter或构造器。
原文连接:http://www.javashuo.com/article/p-vvbomzgm-ec.html

相关文章
相关标签/搜索