首页 > 其他分享 >Spring常用注解,自动扫描装配Bean

Spring常用注解,自动扫描装配Bean

时间:2024-06-21 13:32:28浏览次数:12  
标签:装配 name Autowired 按类型 Spring Bean context 注解

1 引入context命名空间(在Spring的配置文件中),配置文件如下:

Xml代码

xmlns:context="http://www.springframework.org/schema/context"    
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-2.5.xsd

打开配置 <context:component-scan base-package="包名(扫描本包及子包)"/>

spring 会自动扫描cn.pic包下面有注解的类,完成Bean的装配。

Xml代码

<?xml version="1.0" encoding="UTF-8"?>    
<beans xmlns="http://www.springframework.org/schema/beans"           
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"           
    xmlns:context="http://www.springframework.org/schema/context"                  
    xsi:schemaLocation="http://www.springframework.org/schema/beans               
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd               
    http://www.springframework.org/schema/context              
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">                           
    <context:component-scan base-package="cn.pic"/>    
</beans>

2 在classPath中加入注解用的jar包

lib\j2ee\common-annotations.jar

Spring 的context:component-scan扫描支持扫描jar包的方法:

eclipse自带的jar打包程序,默认打包的时候有个选项<Add directory entries>没有勾选,只要勾选了,就可以了.

-----------常用注解--------

--定义Bean的注解

@Controller

@Controller("Bean的名称")

定义控制层Bean,如Action

@Service          

@Service("Bean的名称")

定义业务层Bean

@Repository   

@Repository("Bean的名称")

定义DAO层Bean

@Component  

定义Bean, 不好归类时使用.

--自动装配Bean (选用一种注解就可以)

@Autowired  (Srping提供的)

默认按类型匹配,自动装配(Srping提供的),可以写在成员属性上,或写在setter方法上

@Autowired(required=true)

一定要找到匹配的Bean,否则抛异常。 默认值就是true

@Autowired

@Qualifier("bean的名字") 

按名称装配Bean,与@Autowired组合使用,解决按类型匹配找到多个Bean问题。

@Resource JSR-250提供的

默认按名称装配,当找不到名称匹配的bean再按类型装配.

可以写在成员属性上,或写在setter方法上

可以通过@Resource(name="beanName") 指定被注入的bean的名称, 要是未指定name属性, 默认使用成员属性的变量名,一般不用写name属性.

@Resource(name="beanName")指定了name属性,按名称注入但没找到bean, 就不会再按类型装配了.

@Inject 是JSR-330提供的

按类型装配,功能比@Autowired少,没有使用的必要。

--定义Bean的作用域和生命过程

@Scope("prototype")

值有:singleton,prototype,session,request,session,globalSession

@PostConstruct 

相当于init-method,使用在方法上,当Bean初始化时执行。

@PreDestroy 

相当于destory-method,使用在方法上,当Bean销毁时执行。

--声明式事务

@Transactional 

标签:装配,name,Autowired,按类型,Spring,Bean,context,注解
From: https://blog.csdn.net/2301_80488214/article/details/139858381

相关文章

  • @ComponentScan注解的属性详细使用
    指定包扫描,主要扫描该包下@Controller @Service @Respsitory @Component四个注解@ComponentScan(value="com.songzixian")指定排除要扫描的包@ComponentScan(value="com.songzixian",excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,classes={Co......
  • 计算机Java项目|SpringBoot在线宠物用品交易网站
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • recastnavigation.Sample_TempObstacles代码注解 - rcBuildHeightfieldLayers
    烘培代码在rcBuildHeightfieldLayers本质上是为每个tile生成高度上的不同layer算法的关键是三层循环:forz轴循环forx轴循环for高度span循环判断span和相邻span的连通性(x/z平面相邻cell)如果联通,则标注为同一个layer,也就是在x/z平面上标注layer,形成像是互不相......
  • spring整合openAI大模型之Spring AI
    文章目录一、SpringAI简介1.什么是SpringAI2.SpringAI支持的大模型类型(1)聊天模型(2)文本到图像模型(3)转录(音频到文本)模型(4)嵌入模型(5)矢量数据库3.SpringAI版本二、SpringAI框架使用,对接OpenAI1.环境信息2.初始化3.配置文件(1)application.yml(2)pom文件4.聊天代码测试(1)聊天接......
  • 「Java开发指南」如何使用Spring注释器实现Spring控制器?(二)
    本教程将引导您使用SpringAnnotator实现Spring控制器,标准Java类被添加到搭建项目中,SpringAnnotatorSpring启用Java类。虽然本教程的重点是Spring控制器,但是SpringAnnotator也可以用于Spring服务、组件和存储库。在本教程中,您将学习如何:创建一个Java类将类配置为Spring控制......
  • springMVC域对象共享数据
    目录五、域对象共享数据5.1、使用ServletAPI向request域对象共享数据5.2、使用ModelAndView向request域对象共享数据5.3、使用Model向request域对象共享数据5.4、使用map向request域对象共享数据5.5、使用ModelMap向request域对象共享数据5.6Model、ModelMap、Map的关系5.7、向se......
  • Springboot+Vue+Mybatis-Plus+Easyexcel实现文件导入+导出的excel单元格下拉列表
    引言文件的导入与导出功能扮演着至关重要的角色,特别是在处理大量数据和复杂的表格时。通过整合SpringBoot、Vue、Mybatis-Plus和Easyexcel等先进技术,我们可以构建一个高效、灵活的文件处理系统。其中,Excel作为广泛使用的电子表格软件,其单元格下拉列表功能对于数据录入和校验......
  • 使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
    你好,这里是codetrend专栏“SpringCloud2023实战”。本文简单介绍SpringCloud2023中使用Sentinel进行限流管理。前言随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控......
  • Spring的一些思考(一)
    new一个对象和依赖注入一个对象的区别?new一个对象时,直接使用关键字new来创建实例。这个对象的生命周期由自己来管理,可以实现对对象的细粒度的控制依赖注入是创建对象的另一种方式。DI可以减轻耦合,生命周期由Spring来负责,只需配置该对象和它依赖的对象如何配置即可DI的优......
  • @Slf4j注解的使用
    作用为了少写两行代码,不用每次都在类的最前边写上那个:privatestaticfinalLoggerlogger=LoggerFactory.getLogger(this.XXX.class);只需要在类前面添加注解@Slf4j,即可使用log日志的功能引入确保idea中有Lombok插件(IntelliJIDEA2020.3及以上版本已经内置Lombokplugin......