`
yijiesuifeng
  • 浏览: 19101 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring的注解积累

阅读更多

用注解来向Spring容器注册Bean。

 

需要在applicationContext.xml中注册:

<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>。

如:在base-package指明一个包   

<context:component-scan base-package="cn.wind"/>

也可以在<context:component-scan base-package=” ”/>中指定多个包,如:

<context:component-scan base-package="cn.wind.dao.impl,cn.wind.service.impl,cn.wind.action"/>

 

随时补充==========

 

1:@Repository 标注在持久层,即dao,用于标注数据访问。

 

2:@Service 标注在业务层,即service,用于标注业务逻辑。

 

3:@Controller 标注在控制层。

 

4:@Component 当不明确这个类属于那个层的时候,可以使用@Component进行标注,但不建议使用

 

5:@Autowired 属性加上@Autowired后不需要getter()和setter()方法,Spring会自动注入。

@Autowired(required=false)表示,如果spring上下文中没有找到该类型的bean时,才会使用new ServiceImpl(); 

 

6:@Qualifier 

当接口存在两个实现类的时候必须使用@Qualifier指定注入哪个实现类,否则可以省略,只写@Autowired。

 

例如:定义一个交通工具类:Vehicle。此时有两个子类Bus和Sedan。如果用@Autowired来找Vehicle的话,会有两个匹配的选项Bus和Sedan。为了限定选项,可以如下

@Autowired
@Qualifier("bus")
private Vehicle vehicle;
 

@Qualifier("XXX") 中的XXX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。

 

7:形似@Service("xXX"):相当于讲这个类定义为一个bean,bean名称为xXX,默认为首字母小写

比如在一个Student实现类上加上@Service("student"),括号里面就是给实例化后的Student对象取个名字。这是在你一个接口有多个实现类的情况下区分实现类的方式。

比如Student实现了Person接口,在你的controller里面@Autowired Person时,假如这时Person还有另一个实现类User,为了确定实例化Student还是User, @Service括号里面的东西就有用了,

@Autowired
@Qualifier("student")
private Person person;
 

 

 

这样就确定实例化了一个Person指向一个Student对象。

 

8:@Resource

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

 

@Resource装配顺序

1).如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

2) 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

3) 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

4) 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

 

9:@PostConstruct,@PreDestroy

这两个注释只能应用于方法上,标注了@PostConstruct 注释的方法将在类实例化后调用,而标注了 @PreDestroy 的方法将在类销毁之前调用。

@PostConstruct
public void  init(){
      System.out.println("I'm  init  method  using  @PostConstrut....");
}
@PreDestroy
public void  dostory(){
      System.out.println("I'm  destory method  using  @PreDestroy.....");
}
 

 

18
8
分享到:
评论

相关推荐

    多年积累spring高级资料

    Spring的核心特性包括依赖注入(Dependency Injection, DI),它允许开发者在运行时通过配置文件或注解来管理对象之间的依赖关系,降低了代码的耦合度,提高了可测试性。另一个重要特性是面向切面编程(Aspect-...

    Spring 系列之 Spring 常用注解总结.docx

    工作实战中总结的java项目开发经验和技巧,都是积累,希望帮助到您。

    spring底层的学习之路

    Spring框架是Java开发中的核心组件,它为应用程序提供了一个轻量级的容器,管理着对象的生命周期和依赖关系。Spring MVC则是Spring框架的一个模块,专用于...希望你在学习过程中不断积累,提升自己的Java Web开发能力。

    spring_2021.7.14.zip

    它可以通过注解(@Autowired)或者XML配置来实现,是Spring IoC(控制反转)的一个重要方面。 2. "spring02quickstart_xml.zip":这部分可能包含Spring框架的快速启动教程,特别是通过XML配置文件进行初始化。...

    Spring MVC SessionAttributes注解.docx

    在Spring MVC框架中,`@SessionAttributes`是一个非常重要的注解,它允许开发者将特定的模型数据持久化到HTTP会话(session)中,以便在多个请求之间共享这些数据。通常,模型数据在请求完成后就会从内存中清除,但...

    十分钟上手spring boot

    ### 十分钟上手Spring Boot #### 快速上手Spring Boot项目及配置 ##### Spring Boot简介 Spring Boot 是一款基于 Spring 架构的全新...随着经验的积累,开发者可以进一步探索Spring Boot的更多高级功能和技术细节。

    JAVA 注解---积累

    注解的应用广泛,例如在Spring框架中,`@Autowired`用于自动装配依赖,`@Controller`、`@Service`、`@Repository`等用于组件扫描。在JPA中,`@Entity`标记实体类,`@Table`指定数据库表,`@Id`定义主键等。 在实际...

    spring_test测试代码

    随着实践经验的积累,你将能够熟练地运用Spring框架来构建高效、可维护的Java应用。 通过这个"spring_test"测试代码,你可以学习到Spring框架的基本使用,包括DI和AOP的实践,以及如何编写和组织Spring MVC应用的...

    Spring 入门代码实例

    **Spring 框架入门与依赖注入详解** Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)特性,...在实践中不断探索和积累,你将在Spring框架的使用上越来越得心应手。

    spring-framework-2.5.6

    《Spring框架2.5.6深度解析》 Spring框架,作为Java开发中的核心组件,以其模块化、松耦合的设计理念,为开发者提供了强大的企业级应用支持。...每日积累,逐步提升,Spring的世界等待着我们的探索。

    spring3.2中文参考手册

    Spring框架是由Rod Johnson创建的一个开源Java平台,它最初于2003年发布,旨在解决...这是成为Spring框架熟练开发者不可或缺的知识积累。对于希望深入了解Spring框架的IT专业人士,参考手册提供了非常权威的学习资料。

    springCloud

    微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。 更多关于微服务架构内容-请...

    spring1框架的简单应用介绍

    - 随着经验的积累,可以尝试更复杂的任务,如使用Spring MVC开发RESTful API,或者利用Spring Data访问数据库。 总结,Spring框架以其强大的功能和灵活性,已经成为Java开发的基石。无论是在小型项目还是大型企业...

    spring3.0 api chm 中文版和英文版

    Spring 3.0 API 是一个重要的Java开发框架的官方文档,它为开发者提供了全面的关于Spring框架的功能和用法的详细说明。...随着经验的积累,Spring框架的强大功能将帮助你构建出高效、可维护的Java应用程序。

    hibernate + spring mvc + spring + maven整合开发 Java 开源博客系统

    在实际开发过程中,开发者需要理解各组件之间的交互,熟练运用Spring MVC的注解和配置,掌握Hibernate的映射机制,以及合理组织Maven的依赖管理。此外,对于用户问题的解答和讨论,开发者应具备良好的沟通能力,以...

    spring库文件,很有用的东西

    下载和积累这些库文件表明你可能正在学习或从事Spring相关的开发工作,对理解、调试和优化Spring应用非常有帮助。通过深入学习Spring框架,你可以提升你的Java开发技能,构建出更高效、更稳定的软件系统。

    Pro Spring3

    #### 七、更多关于 Spring AOP 及注解(第7章) - **高级 AOP 概念**:深入探讨更复杂的 AOP 概念和技术,如动态代理等。 - **注解驱动的 AOP**:介绍如何利用注解来实现 AOP,简化代码编写。 - **案例研究**:通过...

    Spring+MyBatis企业应用实战 源码

    6. **注解方式的集成**: 除了XML配置,Spring和MyBatis还可以通过注解方式进行集成,比如在Mapper接口的方法上直接使用@Select、@Insert等注解,简化配置。 通过学习这个“Spring+MyBatis企业应用实战”的源码,...

    SpringSecurity.pdf

    综上所述,Spring Security为我们提供了一整套安全管理解决方案,从认证授权到会话管理,再到分布式系统的安全,最后到OAuth2.0认证协议和JWT令牌的使用,每一个环节都体现了Spring Security在安全方面的深厚积累和...

    spring-mvc helloworld demo

    通过实践这个 demo,你可以深入学习 Spring MVC 的核心概念,如注解驱动的控制器、数据绑定、模型映射以及异常处理等。此外,随着经验的积累,你还可以探索更高级的主题,如 AOP(面向切面编程)、事务管理、RESTful...

Global site tag (gtag.js) - Google Analytics