Spring的IoC注解

【Spring】注解实现IOC操作,你理解了吗? 前面讲解了IOC的基本概念以及操作演示,但是spring配置文件较多,操作起来相对麻烦。今天我们使用注解来操作实现IOC的功能。基于注解式开发spring,相对来说比较少,但是理解这些注解的作用,会对后面学习spring boot产生比较大的影响。所以还是应该重视一下,多用多做就能掌握啦。今天的分享到此结束,我是狮子,希望可以帮到您。 阅读详情

使用标签简化IoC:

1。使用标签来完成IoC,就必须有IoC注解的解析器
使用context:component-scan来扫描spring需要管理的bean
base-package就告诉spring,去哪些包及其子包里去扫描bean,如果有多个包需要被扫描;只需要用逗号隔开多个包即可
<context:component-scan base-package=“com.ujiuye.spring.xxx” />

2.标注Bean的注解:@Component
默认情况,直接使用类的名字(首字母小写作为bean的名字)
如果要修改bean的名称;直接使用value属性来重新定义bean的名称
@Component(“otherbean”)
public class OtherBean {}

3.使用@Component的限制:
对于没有源代码的类(框架内部的预定义类),只能用XML配置;比如DataSource就只能使用XML方式来做IOC.

4.bean组件版型标签
bean组件版型:
@Service用于标注业务层组件、
@Controller用于标注控制层组件(如struts中的action)、
@Repository用于标注数据访问组件,即DAO组件。
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

5.指定bean的作用域:@Scope(“prototype”)

6.初始化和销毁方法
@PostConstruct
public void init() {
相当于

@PreDestroy
public void destory() {
相当于

7.选用xml还是注解:
1),Annotation:使用方便,XML文件很小,但是,依赖关系又重新回到了代码当中;
2),XML:使用稍微复杂,但是,代码很干净,代码不会很任何框架产生关系;XML安全;

在这里插入图片描述

代码:
pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>text</groupId>
    <artifactId>Spring02</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>


    <properties>
        <!--
            定义全局变量:变量名为project.spring.version
        -->
        <project.spring.version>5.0.0.RELEASE</project.spring.version>

    </properties>


    <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${project.spring.version}</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${project.spring.version}</version>
        </dependency>

        <!--德鲁伊连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!--mysql连接驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>




    </dependencies>



    <build>

        <!--加载资源文件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>


    </build>

</project>

App-context.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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">



    <!--IoC注解扫描
        组件扫描
        base-package:从配置的包中,扫描所有标注了IoC注解的类型,自动的创建该类的对象
        并且放入到Spring容器(包含子包)
    -->
    <context:component-scan base-package="text.spring._06_component"/>


</beans>

SomeBean.java:

package text.spring._06_component;

import com.sun.org.apache.xml.internal.security.Init;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**
 * Created by thinkpad on 2019/9/3.
 */
@Controller("some")
//@Scope("prototype")
public class SomeBean {

    public SomeBean(){
        System.out.println("对象被创建...");
    }

    @PostConstruct
    public void init(){
        System.out.println("对象初始化..");
    }


    public void work(){
        System.out.println("正常工作..");
    }

    @PreDestroy
    public void destory(){
        System.out.println("对象销毁...");
    }


}

App.java:

package text.spring._06_component;



import text.spring._05_resource.Employee;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * Created by thinkpad on 2019/9/3.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class App {


    @Autowired
    private ApplicationContext context;

    @Test
    public void testIoc() throws Exception {
        SomeBean someBean = context.getBean("some",SomeBean.class);

        System.out.println(someBean);
    }


    @Test
    public void testScope() throws Exception {
        System.out.println(context.getBean(SomeBean.class));
        System.out.println(context.getBean(SomeBean.class));
        System.out.println(context.getBean(SomeBean.class));
        System.out.println(context.getBean(SomeBean.class));
        System.out.println(context.getBean(SomeBean.class));
        System.out.println(context.getBean(SomeBean.class));
    }

    @Test
    public void testLifecycle() throws Exception {

        SomeBean someBean = context.getBean(SomeBean.class);

        someBean.work();

    }
}

Ansys Lumerical + HFSS + optiSLang 三剑客:手把手教你优化行波MZM调制器(附完整参数配置) 本文详细介绍了如何利用Ansys Lumerical、HFSS和optiSLang三款工具构建自动化协同设计流程,以优化行波马赫曾德尔调制器(TW-MZM)的性能。通过参数化仿真、流程集成与元模型技术,该方案能高效解决多物理场耦合挑战,实现调制带宽、驱动电压等多目标的全局优化,显著提升光子集成芯片的设计效率与性能潜力。 阅读详情

相关推荐

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1358

spring之IoC注解

注解的存在主要是为了简化XML的配置

qq_42338744的博客 867

UniTouch:多模态触觉对齐技术如何重塑零样本跨模态应用

UniTouch模型通过创新的多模态触觉对齐技术,成功将触觉数据映射到通用的视觉-语言嵌入空间,解决了触觉模态的“孤岛困境”。该技术利用对比学习和传感器特定标记,实现了高质量的零样本学习能力,使模型无需额外训练即可完成触觉分类、描述等任务,并能驱动跨模态生成,为机器人、VR和智能制造等领域提供了强大的触觉理解新范式。

weixin_29044713的博客 409

Spring IoC注解详解

这篇文章记录Spring IoC通过注解注入属性的方法。一、注解注入属性一个简单的案例1)Spring配置文件引入context约束&lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cont...

lzgsea的博客 1万+

Android Studio打包全攻略---从入门到精通

初出茅庐 手动打包怎么手动打包项目写完了,现在需要把应用上传到市场,问题出现—怎么把代码变成.apk(Android的可安装文件)。 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管,不要忘了,签名文件别泄漏了,也别搞丢了为什么要打包我最开始就有这个疑问,我们的代码不是点了下运行按钮就直接安装到手机上了吗,我们在在项目Project

我早就想,要这样载着你,翻山越岭 2万+

飞牛NAS一键部署小雅Emby全家桶:解锁海量影音资源与智能刮削

本文详细介绍了如何在飞牛NAS上通过Docker一键部署小雅Emby全家桶,完美解决传统WebDAV挂载无法刮削元数据的问题。该方案整合了小雅Alist海量影音资源与Emby媒体服务器,通过预下载超百GB元数据包,自动实现海报、简介等信息的完美匹配,打造出精美的个人影音库。部署过程需准备阿里云盘令牌与充足存储空间,并详解了从环境配置、镜像拉取到最终验证的完整步骤及优化技巧。

weixin_28312391的博客 926

Spring 框架 IOC 注解

在 Spring 框架中,控制反转(IOC)是核心思想之一。传统 XML 配置方式虽能实现 IOC,但存在配置繁琐、维护成本高的问题。而通过代码注解直接声明 Bean 及其依赖关系,大幅简化开发流程,成为现代 Spring 开发的主流选择。本文将系统讲解 IOC 注解的核心用法、常用注解及纯注解架构实践。

m0_61261153的博客 1161

手机Camera硬件电路设计:从电源管理到信号完整性的实战解析

本文深入解析了手机Camera硬件电路设计的核心挑战与实战经验,重点聚焦于电源管理与信号完整性两大基石。文章详细阐述了AVDD、DVDD、IOVDD和AFVDD四路电源的差异化设计要点与噪声控制策略,并剖析了MIPI等高速信号通道的完整性设计原则,为硬件工程师提供了从理论到PCB布局布线的完整实战指南。

weixin_28308325的博客 251

spring IOC容器 Bean 管理——基于注解方式

IOC 操作 Bean 管理(基于注解方式) ​ 1、什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值…) ​ (2)使用注解,注解作用在类上面,方法上面,属性上面 ​ (3)使用注解目的:简化 xml 配置 ​ 2、Spring 针对 Bean 管理中创建对象提供注解 ​ 下面四个注解功能是一样的,都可以用来创建 bean 实例 ​ (1)@Component ​ (2)@Service ​ (3)@Controller ​ (4)@Repository

学而时习 1万+

通达信抓波段指标(主图)

VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。

q125500612的博客 2140

11 指挥AI写C语言/嵌入式基础代码,适配硬件与底层逻辑

本文为《30天掌控AI编程:从指令到落地,手把手教你指挥AI写代码》系列第十一篇,正式进入第三阶段多场景实战环节。聚焦**C语言/嵌入式基础代码**生成,结合嵌入式开发的核心需求,讲解如何精准编写指令,指挥AI生成适配硬件、贴合底层逻辑的C语言代码,覆盖嵌入式常用底层功能、硬件适配要点、代码规范,搭配完整指令模板、AI输出示例与实操校验方法,零基础也能快速指挥AI完成嵌入式基础开发,无需死记硬背C语言底层语法。

coreopt的博客 140

Spring IOC的注解配置

Spring IOC的注解配置 (一)简述 上回说到,我们可以使用书写XML配置文件的方式来让spring产生我们需要的Bean对象,并放入容器中。但是,书写配置文件是一件非常繁琐的事情,而且一旦配置文件内容很多,阅读起来也是一件让人头疼的事,所以,我们急需一种部分或者完全摆脱配置文件的配置方式。 下面我们就来看看spring的注解配置方式。注解配置和用配置文件配置相比,只是配置的形式不一样,最终达到的目的是基本相同的。就好比坐飞机去北京和坐高铁去北京,虽然使用的交通工具不一样,但是都达到了去北京的目的。

物是人非,结局始终不美 1万+

git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案

本文主要介绍了git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 23万+

Spring 基于注解的IOC

1、曾经xml的配置 <bean id="accountService" class="com.spring.service.Impl.IAccountServiceImpl" scope="" init-method="" destroy-method=""> <property name="" value="" / ref=""></proper...

Zystem 1837

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring基于注解的IOC学习总结

基于注解的IOC使用和基于XML方式的IOC的使用功能是一模一样的,只是注解方式是另一种使用方式而已,通过使用注解,可以完成相关的声明和配置。 先介绍一下XML和注解混合使用的情况,然后再改进为全注解的形式。 IOC的配置 首先,在pom.xml文件中,导入Spring IOC相关的约束和依赖。 例如: <?xml version="1.0" encoding="UTF-8"?> &...

rotation博客 510

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring基于注解的IOC

Spring基于注解的IOC 今天主要分享4类注解 用于创建对象的 用于注入数据的 用于改变作用范围的 和生命周期相关的 在使用注解的时候,我们需要在主配置文件中加入相应关于注解的约束,然后需要告知spring在创建容器时候需要扫描的包. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww

qq_49044908的博客 617

Spring基于注解使用IOC

基于注解的IOC

怪咖@的博客 1624

Spring IoC常用注解

Spring IoC容器 Spring IoC(Inversion of Control,控制反转)是Spring Framework的最核心的部分。 所谓控制反转,是指通过使用IoC容器对象依赖关系的管理被反转了,也就是说,对象之间的依赖关系由IoC容器进行管理,并且由Ioc容器通过依赖注入(DI,Dependency Injection)的方式来完成对象的注入。   在

raiet 2022

spring的IOC的注解

这里是修真院后端小课堂,每篇分享文从 八个方面深度解析后端知识/技能,本篇分享的是: 【spring的IOC的注解】 【修真院java小课堂】spring的IOC的注解 开场语: 大家好,我是IT修真院上海分院第10期的学员洪阳,今天给大家分享一下,修真院官网java任务1,深度思考中的知识点——spring的IOC的注解. (1)背景介绍: 传统的xml配置完成IOC,如果内容比较多则配置需花费...

learning__java的博客 158

Spring基于注解的IOC配置

学习基于注解的IOC配置,大家脑海里首先得有一个认知,即注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦合。只是配置的形式不一样。

w2144217940的博客 1154

如何使用Spring IOC的注解进行开发

Spring IoC(Inversion of Control,控制反转)容器通过提供了一种简洁且强大的方式来进行依赖注入和配置管理。开发使得 Spring 应用程序的配置更为简洁和直观,减少了 XML 配置的冗余和复杂性。本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作。

lovellsj的博客 1543

Spring基于注解的IOC以及IOC的案例

使用Spring的IOC实现账户的CRUD 1.spring中ioc的常用注解 2.案例使用xml方式和注解方式实现单表的CRUD操作 持久层技术选择:dbutils 3.改造基于注解的IOC案例,使用纯注解的方式实现 spring的一些新注解使用 4.spring和junit整合 创建数据库 create table account( id int primary key auto_increment, name varchar(40), money float )character

骑着蜗牛行天下 265

Spring IoC — 基于注解

文章目录1. Spring IoC — 基于注解1.1 Spring框架部署1.1.1 创建Maven项目1.2.2 添加SpringIoC依赖1.2.3 创建Spring配置文件1.2 IoC常用注解1.2.1 @Component1.2.2 @Scope1.2.3 @Lazy1.2.4 @PostConstruct1.2.5 @PreDestroy1.2.6 @Autowired 1. Spring IoC — 基于注解 SpringIoc的使用,需要我们通过XML将类声明给Spring容器进行管理,从

qq_44058265的博客 169

Spring IOC 注解开发

Spring IOC 注解开发核心是 “注解标记类 + 包扫描”,替代传统 XML 配置,更简洁高效;4 个核心注解(@Component/@Controller/@Service/@Repository)功能一致,仅语义分层不同;Bean 的 id 建议显式指定,避免重复或识别异常,是注解开发的关键细节;注解开发是 Spring/SpringBoot 的基础,需熟练掌握 “扫描 - 标记 - 获取 Bean” 的完整流程。

2301_82251392的博客 868

spring IoC注解

三、spring之IOC注解 多spring配置文件的使用(分模块开发,每个模块可能有自己的spring配置文件) (一)、搭建使用注解的方式 ioc注解 1. 有xml配置文件(xml配置+注解组合使用) 第一步、要使用注解,需导入aop包 第二步、在配置文件头部加入context的schema 使用配置文件使用 <context:component-scan> <context:component-scan>组件扫描,扫描里边有标注@Component, @Reposit

qq_44421809的博客 287

Spring入门第五讲——Spring IoC的注解开发

还记得在《Spring入门第三讲——Spring中Bean的配置与管理以及分模块开发的配置》这一讲中,我说过Spring进行Bean的管理有两种方式吗?其中一种是使用配置文件的方式,这个我们已经讲过了,还有一种是使用注解的方式,本讲就来讲一下Spring IoC的注解开发。那啥是注解呢?注解是代码中的特殊标记,它可以使用在类、方法、属性上面,使用它可以实现一些基本的功能,其写法是@注解名称(属性=...

李阿昀的博客 3335

Spring的IOC的注解的详解

简介 spring通过applicationContext.xml管理bean工厂,但是我们还有一种更加简便的方式就是使用IOC注解的方式来进行管理。 优缺点和对比 使用IOC注解的优点: 简洁明了、代码简单 使用IOC注解的缺点: 1.不够直观,使用xml配置文件的方式会让结构一目了然,但是使用IOC注解时,想知道各个类的实例需要进入到相应的类内部去看,相对麻烦。 2.不能对jar包里面的类使用...

GEEK-BANANA 1761
上一篇: Spring的DI注解:Autowired和Resource
下一篇: 用Spring进行注册的案例(使用注解)
NewBee.Mu
博客等级 码龄8年 602粉丝 379原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值