热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

控制反转和面向切面,spring怎么实现控制反转

通常new一个实例,控制权由程序员控制,而控制反转是指new实例工作不由程序员来做而是交给Spring容器来做。。在Spring中BeanFactory是IOC容器的实际代表者。D


2020.9.9spring中继控制IOC学习笔记


IOC的概念:


IOC是指具有依赖于注入功能的容器,


是一个容器,IOC容器可以创建负责实例化、放置、设置和在APP应用程序中建立对象依赖关系的对象。 通常,在new的实例中,控制权由程序员控制。 “反转控制”表示new实例的工作不是由程序员进行的,而是由Spring容器进行的。 在Spring中,BeanFactory是IOC容器的实际代表。


DI )依赖关系注入(Dependency injection ) :容器创建对象后,处理对象依赖关系。


为了降低代码之间的耦合度,将所有类传递给第三方容器进行控制,并直接从容器中检索需要使用哪个类。


注入IOC容器的几种方式set注入方式(xml轮廓方式) ) )。


静态工厂注入方式


结构方法注入方式


基于注释的方法


1.set方法(使用spring的xml配置文件)1)首先在pom.xml中导入jar包的spring-context,然后允许进行spring.xml配置文件


ependencygroupidorg.spring framework/groupidartifactidspring -上下文/artifactidversion4.3. 14.release/version /


! -id是Bean类本身的名称,可以使用name,name用逗号分隔名称。 例如,name='user1,user2,user3'-- bean class=' com.chuan.model.user ' id=等-参数注入--property name='


property是导入类属性。 以上写了两个属性。


)3)获取容器中的bean类


Bean配置文件classpathxmlapplicatiOncontextctx=newclasspathxmlapplicationcontext (' context path.XML ' ); 获取//Bean类。 name是指bean类中的id值useruser=CTX.getbean('user ',User.class ); system.out.println('user='user ); 2 .注释方式向IOC容器(1)注入类,创建java注释配置文件


//这构成了Configure类,//注释Bean表示这是Bean。 在spring中注册的ioc容器@ configurationpublicclassjavaconfig { @ bean (' Linux cmd ' (Linux conditional Linux cmd ) ) linuxconditionation }@bean(windowscmd ) (WindowsConditional windowsCmd ) ) { return new WindowsConditional; ()2)获取IOC容器中的Bean类


//它注释spring IOC容器中的类annotatiOnconfigapplicationcontextaac=newannotationconfigapplicationcontext (Java config.class ) xcmd=AAC.getbean(Linuxcmd (,LinuxConditional.class ) ); system.out.println (' Linux cmd=' Linux cmd ); windowscOnditionalwindowscmd=AAC.get bean (windows cmd (,WindowsConditional.class ) ); windowscmd.setname(dsad ); windows cmd.seturl (https://张川/blog.csdn.net ); system.out.println (' windows cmd=' windows cmd ); 打印结果:


二、正在spring的aware接口aware接口是指能够感知正在spring的Bean类自身属性的接口。


BeanAware接口是获取spring IOC容器中Bean类的唯一名称。 ResorceLoaderAware加载资源文件中的数据。 EnvironmentAware是加载到资源文件中的资源,必须尝试在注释@PropertySource中加载资源。 这是接口实现类。 AwareServiceService


/** * @Author张川* @博客张川. blog.csdn.net * @ date 2020-09-19336005 */@ service @ PRopertySource (valla thor注释property source是资源文件中的资源publicclassawareserviceimplementsbeannameaware,beberce 资源加载器,环境专用资源加载器; 私有环境环境; publicvoidsetbeanfactory (beanfactory beanfactory ) throwsbeansexception { } public void output ) throwsioexception { system.} //使用资源加载器将资源文件中的javaboy.txt文件bufferedreaderbr=newbufferedreader (newinputstreamreader (资源. get inpurce system.out.println('s='s; br.close (; bufferReader资源string address=environment.getproperty (' Java boy.address ' ); //2。 由于注释PropertySource中已经加载了javaboy.propertires资源,因此可以使用environment.getProperty参数system.out.println (' addonment.getproprty ) }/* * * *实现beanname aware接口类以获取bean的名称。 其中,beanname自动获取bean类本身的id属性值* @ params */publicvoidsetbeanname { strings } this.beanname (/* * enviroment接口) * @ param environment */publicvoidsetenvironment (环境环境) { this.envirOnment=environment; } /** *获取资源加载器* @ paramresourceloader */publicvoidsetresourceloader (资源加载器) this.resorceloader


推荐阅读
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • springboot启动不了_Spring Boot + MyBatis 多模块搭建教程
    作者:枫本非凡来源:www.cnblogs.comorzlinp9717399.html一、前言1、创建父工程最近公司项目准备开始重构,框 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
author-avatar
Lily賈麗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有