模拟实际开发过程的调用过程XML版-Setter方式注入 源码获取github [TOC] 1.项目结构 2.jar包跟上个一样 3.重写set方法 UserServiceImpl.java 12345 private UserDao userDao; public void (UserDao userDao) { this.userDao = userDao;} beans.xml 1234567 <bean id="userDaoImpl" class="com.h…
*.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:#99ccff;}*.hl_mark_KMSmartTagYellowImg{background-color:#ffff66;}*.hl_mark_KMSmartTagOrangeImg{background-color:#ffad5b;}*.hl_mark_KMSmartTagGreenImg{b…
我相信大部分同学对spring中bean的生命周期都不陌生,但是如果要详细的说出每一个步骤,可能能说出来的也不多,我之前也是这样,前几天调了一下spring的源码,看了一点书,突然一下明朗了,理解了spring中bean的生命周期.接下来就跟大家分享下我的心得,有什么不对的也希望大家帮忙指正~ 我们先看一下spring中bean的生命周期: 这是我在网上随便找的一张图,大家估计也看得不少,接下来我就这张图一步步分析spring为什么会这么设计bean的生命周期. 首先,我们知道spring的一大…
一,介绍Bean的装配机制 在Spring中,容器负责对象的创建并通过DI来协调对象之间的关系.但是我们要告诉Spring创建哪些Bean并且如何将其装配在一起.,装配wiring就是DI依赖注入的本质. Spring装配bean有几种机制: 在XML中进行显式配置 在Java中进行显式配置 隐式的bean发现机制和自动装配 三种机制可能会给我们选择上造成困扰?哪个好?是不是不同情况有不同的选择? 答:会在很多场景下,选择哪种机制完全取决于个人的喜好,但是我推荐用自动装配,可以自动装配我们为什么…
        先从IOC说起,这个概念其实是从我们平常new一个对象的对立面来说的,我们平常使用对象的时候,一般都是直接使用关键字类new一个对象,那这样有什么坏处呢?其实很显然的,使用new那么就表示当前模块已经不知不觉的和new的对象耦合了,而我们通常都是更高层次的抽象模块调用底层的实现模块,这样也就产生了模块依赖于具体的实现,这样与我们JAVA中提倡的面向接口面向抽象编程是相冲突的,而且这样做也带来系统的模块架构问题.很简单的例子,我们在进行数据库操作的时候,总是业务层调用DAO层,当然…
除了组件扫描与自动装配之外还有基于Java代码的装配与基于XML的装配. 有一些场景是我们不能用自动装配的,比如我们要给第三方库中的组件装配到我们的应用中,这时自动装配无效,因为自动装配只能扫描本应用中的包. 这时我们就要在基于代码代码的装配和基于XML的装配中进行选择,前面我们说到了JavaConfig相比XML更强大更安全. 一.基于Java代码的装配Bean(JavaConfig) 但是JavaConfig又与Java有所区别. 概念上  JavaConfig是配置 与应用的其他代码业务逻…
如果一个bean没有默认的构造函数,那么可以通过工厂方法来构造一个bean.Spring通过<bean>元素的factory-method属性来装配工厂创建的Bean.下面例子中的Stage是一个工厂类,通过它的getInstance()方法可以获得一个单例,但是他没有共有的构造函数,所以在构造Bean的时候需要通过工厂方法getInstance()来获得一个实例Bean.Stage类作为单例类来实现. package com.moonlit.myspring; public class St…
继承 Spring提供了配置信息的继承机制,可以通过为<bean>元素指定parent值重用已有的<bean>元素的配置信息. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XML…
可以使用bean的init-method和destroy-method属性来初始化和销毁bean.定义一个Hero类: package com.moonlit.myspring; public class Hero { public void born() { System.out.println("the hero is born."); } public void defaultBorn() { System.out.println("the hero is born b…
Spring之面向切面编程 一.理解何为面向切面编程 对于这个的理解,我觉得Spring实战中的例子讲得很明白: 假设我现在是一个小区用户,每个月小区都要收电费,这时候就会来人查看电表,算出来这个月电费是多少,然后让我去结账. 但在我很小的时候,其实电费是每个人家里有电表,要自己充电费,如果没电了就会断电,所以经常会出现在家里用着用着电,突然断电的情况,这时候就要下楼看电表,检查是没电费了还是跳闸了. 电对家庭而言十分重要,哪里都离不开用电,但是我们更关注吃饭.睡觉.游戏等等跟我们密切相关的事情…