springJSR-250注解学习

spring与JSR-250注解学习

参考书:
1.参考书1 ---------------《精通 Spring 2.x—企业应用开发精解》 


前言:要使用注解,spring 的配置文件得到了极大的简化,只需要加入下面两个命名空间即可

<context:annotation-config/>        

<context:component-scan base-package="testspring.main"/>

那是不是我们有了注解了以后就可以完全不使用xml配置文件了呢,答案是否定的,因为有如下原因:

1.如果 Bean 不是自己编写的类(如 JdbcTemplate、SessionFactoryBean 等),注释配置将无法实施,此时 XML 配置是唯一可用的方式。

2.在第三方类 Bean 的配置,以及那些诸如数据源、缓存池、持久层操作模板类、事务管理等内容的配置上,XML 配置依然拥有不可替代的地位。

所以我们应该是合理的使用注解,增加程序的内聚性,同时结合使用xml配置文件,达到快速开发的效果。




Spring注解学习
1.@RestController}相当于@Controller和@Requestbody 连个一起使用,使用@RestController不需要返回具体的前端页面,可以返回字符串。

2.@SpringBootApplication

由于大量项目都会在主要的配置类上添加@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解。因此Spring Boot提供了@SpringBootApplication注解,该注解可以替代上面三个注解(使用Spring注解继承实现)。

3.@Resource是JSR-250 规范定义的注解。 @Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,面 @Resource 默认按 byName 自动注入罢了。@Resource 有两个属性是比较重要的,分别是 name 和 type。

要让 JSR-250 的注释生效,除了在 Bean 类中标注这些注释外,还需要在 Spring 容器中注册一个负责处理这些注释的 BeanPostProcessor:       
<bean  class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>       
CommonAnnotationBeanPostProcessor 实现了 BeanPostProcessor 接口,它负责扫描使用了 JSR-250 注释的 Bean,并对它们进行相应的操作。

@PostConstruct 和 @PreDestroy 也是JSR-250 规范定义的注解。他们分别表示bean的生命周期的开始和销毁,可以定义相应的操作,他们一般都是注解在方法之上的。关于更多的细节可以看   *****参考书1。

4.@Component注解

@Component 有一个可选的入参,用于指定 Bean 的名称。形如:@Component("car"),表示定义的Bean的name=car.一般情况下,Bean 都是 singleton 的,需要注入 Bean 的地方仅需要通过 byType 策略就可以自动注入了,所以大可不必指定 Bean 的名称。

默认情况下通过 @Component 定义的 Bean 都是 singleton 的,如果需要使用其它作用范围的 Bean,可以通过 @Scope 注释来达到目标。@Scope("prototype")。

spring容器最初提供了两种bean的scope类型:singleton和prototype,但发布2.0以后,又引入了另外三种scope类型:request、session和global session,这三种只能在web 应用中才可以使用。
 
singleton: Spring 容器只会创建该bean定义的唯一实例,这个实例会被保存到缓存中,并且对该bean的所有后续请求和引用都将返回该缓存中的对象实例,一般情况下,无状态的bean使用该scope。
 
prototype:每次对该bean的请求都会创建一个新的实例,一般情况下,有状态的bean使用该scope。
 
request:每次http请求将会有各自的bean实例,类似于prototype。
 
session:在一个http session中,一个bean定义对应一个bean实例。
 
global session:在一个全局的http session中,一个bean定义对应一个bean实例。典型情况下,仅在使用portlet context的时候有效。

5.Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。

 

JSR-250 

规范定义的注



JSR注解学习

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值