Java教程

java 快速入门之spring(一)---注入

本文主要是介绍java 快速入门之spring(一)---注入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

spring 的注入相关

1、术语含义

   J2EE- 可以理解为一个平台,一种架构,一种体系,一种规范,具体可百度,类似为lnmp这种。

   BEAN - 也叫java bean ,表示应用组件,在ioc中,可以理解为万物皆为bean

  DI - 依赖注入

  依赖注入可以带来松耦合,举例:在构造函数里,将需要注入到的对象传入,参数限定是这些对象需要

AOP - 面向切面,可以理解为各种bean包裹的外壳,距离如 常见的before after这种钩子,以前可能需要再代码中实现,而使用切面,这是按照配置来实现,也就是before 和after 并不知道它在那里被调用,被谁调用,而只有“装配者”才知道。

JNDI -java的命名目录,这是j2ee规范中的概念

EJB -企业级java bean  ,也是j2ee规范中的概念

SpEl-Spring的表达式

2、注入的常用注解

@component:标记类为组件类,组件类会被spring自动配置为bean,如果需要指定bean的Id,则使用@component(”id名“),当然也可以采用@Name的(”id名“)来命名

@componentScan :启用组件扫描,默认扫描同包下的带有component注解的类,扫描包常用属性:value-指定扫描的包名,basePackages-使用数组的形式指定多个包名 ,basePackageClassess,指定扫描的类,这里有个经验:扫描的类可以是组件类,但更好的是接口类。通过标记接口的方式,可以保持对重构友好的接口引用,避免引用任何实际的应用程序代码,因为实际的代码很可能会在以后被删掉。

@autowired:自动装配,这个注解可以用在方法,构造器,属性上,个人理解:就是当有这个注解时,方法的入参如果有某个bean类型的,那么spring 就会自动完成依赖关系和装配关系。常用属性:required-如果没有匹配到相应的bean,是否抛出异常。这个是spring特有的注解,和java的@Inject 一样。

@configuration:javaConfig配置类。

@bean:在javaConfig配置类中使用此注解,告诉Spring,有这个注解的方法返回了一个bean对象,注解支持@bean(name="xxxID"),这里需要注意,spring会拦截所有其他的对含有此注解的调用,并且会直接返回一个该方法的bean,也就是说,带有bean的方法,只有spring会调用的时候,方法里的代码会生效,用户自己调用的话,会直接拿到一个对象。

 @Profile:指定bean的环境,此注解可以单独的在类的上面,如果要在方法上面注解,那么需要和@bean一同使用,当有这个注解时,spring会根据profile中的环境是否激活来决定是否创建这个bean,如果没有指定profile的,始终会创建。

@Conditional 用到带有@Bean注解的方法上,如果给定的条件计算为true,则创建这个bean

@Primary :和@Component一同使用,表示有多个在一个接口下多个实现类都标记了@Component注解是,拥有@Primary注解的作为首选bean。

@Qualifier:限定符注解,一般再与@Autowired或者@Inject协同使用时,在注入的时候指定注入进去的是哪个bean;再和@Component或者@Bean协同使用的时候,表示自定义的限定符名称,也就是再调用处,如与@Autowired搭配时可以指定的名字,这样做的好处时,如果以后某个bean重构了,改名字了,只要@Qualfier里的名字没有改,代码就能正常,否则会抛异常,说找不到beanId。

@Scope:bean的作用域,spring默认时单例的,通过此注解可以更改bean的作用域,spring的作用域有:单例、原型(每次新建一个),会话,请求。此注解经常和@Cpmponent或者@Bean协同使用。

  对于web中的会话场景,scope的赋值是@Scope(value=web Application Context。SCOPE_SESSION,proxyMode=Scope的Proxy Mode.INTERFACES).

关于proxyMode的个人理解:只要是bean,spring就会在启动的时候注入,但是当遇到这种类似session的bean,只有每个用户的请求真正进来了,才会有一个与这个用户相对应的会话匹配,所以这个时候就需要设置proxyMode,让spring在启动的时候注入的是一个代理,这样当用户的session存在的时候,程序运行调用方法的时候,spring通过proxMode的那个代理去实现相应的功能。

 @PropertySource:注入外的值,格式(“classpaths:/com/xxx/xxx/app.properties”),常和@Configuration搭配

3、SpEL:通过表达式注入值

 

这篇关于java 快速入门之spring(一)---注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!