注解

1、@Primary注解

1.1、问题:

当一个接口拥有不同的实现类时,使用@Autowired注解时会报

org.springframework.beans.factory.NoUniqueBeanDefinitionException

方案1:使用@Qualifier注解,选择一个对象的名称,通常比较常用

方案2: @Primary可以理解为默认优先选择,同时不可以同时设置多个,内部实质是设置BeanDefinition的primary属性。

2、@Bean 基础声明

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。

SpringIOC 容器管理一个或者多个bean,这些bean都需要在@Configuration注解下进行创建,在一个方法上使用@Bean注解就表明这个方法需要交给Spring进行管理。

3、 @Configuration

用@Configuration注释 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。

4、@Component

@Component就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

5、@Deprecated

简单来讲就是,若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。

5、@Scope

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

另外scope还有prototype、request、session、global session作用域。scope="prototype"多例

1.singleton单例模式,

  全局有且仅有一个实例

2.prototype原型模式,

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

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类型来使用。

5、@preAuthorize

1、方法前执行验证

6、@preAuthorize

1、方法后执行验证

你可能感兴趣的:(java)