为了账号安全,请及时绑定邮箱和手机立即绑定
  • 首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。   那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。如果你还不明白的话,我决定放弃。
    查看全部
    31 采集 收起 来源:IOC及Bean容器

    2014-12-31

  • 你考上了重点大学,麻麻告诉你,你的亲爹其实是隔壁老王,老王有个孩子叫小明,现在要代替你的身份去上重点大学,你愉快地接受了。
    查看全部
  • #spring——bean的生命周期# 生命周期:定义,初始化,使用,销毁 一.初始化: 方法1.实现org.springframework.beans.foctory.InitializingBean接口,覆盖afterPropertiesSet方法。系统会自动查找afterPropertiesSet方法,执行其中的初始化操作 方法2.配置init-method 例如设置bean中init-method="init"那么在初始化过程中就会调用相应class指定类的init()方法进行初始化工作 二 销毁(与初始化类似) 方法1.实现org.springframework.beans.foctory.DisposableBean接口,覆盖destory方法。 方法2.配置destory-method 三 配置全局初始化、销毁方法(属于默认配置,参考截图) 注意: 当三种方式同时使用时,全局(默认的)初始化销毁方法会被覆盖。 另外实现接口的初始化/销毁方式会先于配置文件中的初始化/销毁方式执行。 即使没有以上三种初始化方法也是可以编译执行的
    查看全部
  • @·AOP基本概念及其特点 1)什么是AOP ·AOP:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 ·主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 2)对切面的理解 程序中的每一个模块或者说功能,任何一个模块中都要记录它的日志、事务、安全验证等等,给我们带来的工作量非常大。 当程序到达某种规模时,尤其是格式调整之类的,这种改动量是非常大的。如果通过切面方式,对开发人员是不可见的,默认地会对每一个子模块记录日志等这些工作。通过预编译或者动态代理的方式来执行这个功能, 对开发人员是透明,他不需要知道。 切面是和功能垂直的,也就是切面是横切与各个功能之上的 3)AOP实现方式 ①预编译-AspectJ ②运行期动态代理(JDK动态代理、CGLib动态代理)-SpringAOP、JbossAOP 4)AOP几个相关概念 ①切面---一个关注点的模块化,这个关注点可能会横切多个对象 ②连接点--程序执行过程中的某个特定的点 ③通知----在切面的某个特定的连接点上执行的动作 ④切入点--匹配连接点的断言,在AOP中通知和一个切入点表达式关联 ⑤引入----在不修改类代码的前提下,为类添加新的方法和属性 ⑥目标对象-被一个或者多个切面所通知的对象 ⑦AOP代理--AOP框架创建的对象,用来实现切面契约(包括通知方法执行等功能) ⑧织入---把切面连接到其他的应用程序类型或者对象上,并且创建一个被通知的对象,分为:编译时织入,执行时织入 Spring的AOP实现 ·纯java实现,无需特殊的编译过程·,不需要控制类加载器层次 ·目前只支持方法执行连接点(通知Spring Bean的方法执行) ·不是为了提供最完整的AOP实现(尽管它非常强大);而是侧重于提供一种AOP实现和Spring IOC容器之间的整合,用于帮助解决企业应用中的常见问题 ·Spring AOP不会与AspectJ竞争,从而提供综合全面的AOP解决方案。 有接口和无接口的Spring AOP实现区别 ·Spring AOP默认使用标准的JAVASE动态代理作为AOP代理,使得任何接口(或者接口集)都可以被代理 ·Spring AOP中也可以使用CGLIB代理(如果一个业务对象并没有实现一个接口)
    查看全部
  • Bean 的定义及作用域注解 A、@Controller :注解控制器类(控制层 MVC) B、@Service :注解服务类(服务层) C、@Repository :注解 DAO 类(持久层) D、@Component :将普通的 bean 注解到 spring 容器中,相当于配置文件中的<bean id="xxx" class="xxx"/> 元注解(Meta-annotations) 元注解即是许多 Spring 提供的注解可以作为自己的代码,元注解是一个简单的注解,可以应用到另一个注解 除了 value() 元注解还可以有其他的属性,允许定制 类的自动监测及 Bean 的注册 Spring 可以自动检测类并注册 Bean 到 Applicationcontext 中 <context:annotation-config /> 通过基于 xml 的 Spring 配置 为了能够自动检测到这些类并注册相应的 Bean ,需要 <context:component-scan base-package="xxx" /> <context:component-scan> 包含 <context:annotation-config>,通常使用前者后,就不需要再使用后者 使用过滤器进行自定义扫描 A、默认情况下,类被自动发现并注册 bean 的条件:使用 @Component @Repository @Service @controller 注解或者使用 @Component 的自定义注解 B、可以通过过滤器修改默认注解的行为 C、还可以使用 use-default-filters = "false" 禁用自动发现与注册
    查看全部
  • introduction的应用: 有个类叫小明(biz),小明隔壁住着老王(FitImpl),老王实现了一个技能叫开豪车(Fit) 现在上帝声明了一个切面,这个切面给小明指定一个新的爹叫老王,于是小明每次叫爸爸的时候就能开豪车了~ 类匹配(小明):type-matching 接口(开豪车):implement-interface 接口的实现类(老王):default-impl 引入的作用:小明干自己的事的时候(叫爸爸)能莫名其妙地开上豪车而不用做多余的工作,这些工作由上帝(AOP)帮他完成,这叫“解耦”
    查看全部
    9 采集 收起 来源:Introductions应用

    2017-08-01

  • 1.ApplicationContextAware 1.1 接口方法:setApplicationContext 1.2 作用:通常用来获取上下文对象,声明全局变量后在方法中对变量进行初始化并供其他方法调用 1.3 实现过程:创建一个类并实现ApplicationContextAware接口,重写接口方法public void setApplicationContext(ApplicationContext applicationContext);在xml文件中配置该类;当spring加载该配置文件时即调用接口方法 2.BeanNameAware 2.1 接口方法:setBeanName 2.2 作用:获取声明的类名,声明全局变量后在方法中对变量进行初始化并供其他方法调用 2.3 实现过程:创建一个类并实现BeanNameAware接口,重写接口方法public void setBeanName(String name);在xml文件中配置该类;当spring加载该配置文件时即调用接口方法 综合测试: 1.创建一个类,同时实现ApplicationContextAware和BeanNameAware接口并重写其方法。声明一个全局变量beanName并在方法setBeanName对其初始化; 2.在setApplicationContext方法中使用参数applicationContext的getBean方法(方法参数为成员变量beanName,即this.beanName)获取bean的名称并打印其hashcode 3.将1中创建的类配置到xml文件中 4.创建单元测试,读取xml文件并执行测试方法,通过上下文信息直接获取bean并打印出其hashcode 结论:在加载xml文件时即加载其配置的bean并调用其中的方法,最后的hashcode相同,说明获取的bean是同一个。
    查看全部
  • Spring 注入:是指在启动 Spring 窗口加载 bean 配置时完成对变量的赋值行为 常用两种注入方式 A、设值注入 <property name="xxx" ref="xxx"></property> B、构造注入 <constructor-arg name="xxx" ref="xxx"></constructor-arg>
    查看全部
    8 采集 收起 来源:Spring注入方式

    2018-03-22

  • Bean的自动装配(Autowiring) 1.No:不做任何操作 2.byname:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配 3.byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;如果存在多个该类型的bean,那么抛出异常,并指出不能使用byType方式进行自动装配;如果没有找到相匹配的bean,则什么事都不发生 4.Constructor:与byType方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常 Bean的自动装配:在beans标签配置属性 default-autowire="no/byName/byType/constructor" 作用为:省去了在Spring的xml中配置property标签和constructor-arg标签,只需要配置bean标签即可 PS:byName和byType为设值注入,constructor为构造注入; byName要求bean标签的id属性需要和成员变量的名称一致, byType和constructor则跟id无关
    查看全部
  • #spring——Aware接口# 作用:实现了Aware接口的bean在初始化后可以获取相应资源并进行相应的操作(对于操作的结果要慎重!) 举例: ApplicationContextAware:向实现了该接口的bean提供IOC容器的上下文信息(ApplicationContext),实现了该接口的bean必须配置到配置文件中并由spring的bean容器加载 BeanNameAware:向实现了该接口的bean提供关于beanName定义的相关内容 (参看截图)
    查看全部
  • #spring——IOC及bean容器# 一 接口 接口:只能有声明不能有实现,支持多重继承(在java8中接口可以拥有方法体) 抽象类:即可以有包含实现的声明也可以有不包含实现的声明 类:声明必须包含实现 接口实现的变动不会影响其他各层的调用,对公共服务非常重要 二 IOC——控制反转 控制反转:控制权的转移,应用程序本身不负责依赖对象的创建与维护,而是由外部容器负责创建和维护。 依赖注入(DI):是一种实现方式,由IOC容器在运行期间,动态的将某种依赖关系注入到对象之中 目的:创建对象并且组装对象之间的关系 三 Spring的bean配置 在IOC容器中将所有的控制对象称作bean,Spring对于bean的使用有两种方式:基于spring-ioc.xml的配置和注解。 注意xml中关于bean的配置程序段 <bean id="oneInterface(自定义)" class="配置的实现类"></bean> 使用示例: public void test(){ OneInterface interface=super.getBean("oneInterface");//获取bean,不需要new对象 interface.hello();//调用函数 }
    查看全部
    7 采集 收起 来源:IOC及Bean容器

    2018-03-22

  • spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 ——轻量大小、开销轻量 ——通过IoC达到松耦合 ——提供了面向切面编程的丰富支持允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发 ——包含并管理应用对象的配置和生命周期是一种容器 ——将简单的组件配置、组合成为复杂的应用是框架
    查看全部
    7 采集 收起 来源:Spring概况

    2014-11-07

  • #spring——bean的配置及作用域# 1.bean的常用配置项:(理论上只有class是必须的) id:唯一标识 class:具体是哪一个类 scope:范围 constructor arguments:构造器的参数 properties:属性 Autowiring mode:自动装配模式 lazy-initialization mode:懒加载模式 initialization/destruction method:初始化/销毁的方法 2.bean的作用域 singletion 单例 bean容器只有唯一的对象(默认模式) prototype 每次请求会创建新的实例,destory方式不生效 request 对于request创建新的实例,只在当前request内有效 session 对于session创建新的实例,只在当前session内有效 global session 基于portlet(例如单点登录的范围)的web中有效,如果在web中同session bean的作用域:
    查看全部
  • Resources (针对于资源文件的统一接口) A、UrlResource:URL 对应的资源,根据一个 URL 地址即可获取 B、ClassPathResource:获取类路径下的资源 C、FileSystemResource:获取文件系统里面的资源 D、ServletContextResource:ServletContext 封装的资源,用于访问 ServletContext 环境下的资源 E、InputStreamResource:获取输入流封装的资源 F、ByteArrayResource:获取字节数组封装的资源 通过实现 ApplicationContextAware 接口中的方法 setApplicationContext(ApplicationContext applicationContext) Resource resource = applicationContext.getResource("xxx"); classpath:config.txt file:C:\\config.txt ftp:C:\\config.txt http://www.baidu.com/more/
    查看全部
  • #spring——bean的配置及作用域# 1.bean的常用配置项:(理论上只有class是必须的) id:唯一标识 class:具体是哪一个类 scope:范围 constructor arguments:构造器的参数 properties:属性 Autowiring mode:自动装配模式 lazy-initialization mode:懒加载模式 initialization/destruction method:初始化/销毁的方法 2.bean的作用域 singletion 单例 bean容器只有唯一的对象(默认模式) prototype 每次请求会创建新的实例,destory方式不生效 request 对于request创建新的实例,只在当前request内有效 session 对于session创建新的实例,只在当前session内有效 global session 基于portlet(例如单点登录的范围)的web中有效,如果在web中同session
    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
Java的高级课程,适合对Java基础知识应用自如,并熟悉MVC架构的小伙伴们。如果想成为一名Java工程师,这门课程是一定要学哒。
老师告诉你能学到什么?
掌握依赖注入、IOC和AOP的概念,并能进行简单应用。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!