Spring核心

核心一:IoC(Inverse of Control 控制反转): 将对象创建权利交给Spring工厂进行管理。比如说:Book book = new Book(); 

 Book book2 = Spring工厂.getBook();

IoC的底层实现:工厂模式+反射+配置文件(xml)

IoC容器装配Bean基于xml的四种方式:

1、无参数构造函数

2、静态工厂方式

3、实例工厂方式

4、FactoryBean方式

属性依赖注入xm的三种方式:

1、构造器参数注入(构造函数带参数);

2、setter方法注入;

3、接口注入

初始化方法,销毁方法:

<bean id="lifeCycleBean" class="cn.itcast.spring.d_xmllifecycle.LifeCycleBean" init-method="init" destroy-method="destroy" />

单例多例:

<bean id="prototypeBean" class="cn.itcast.spring.c_xmlscope.PrototypeBean" scope="prototype"/>

<bean id="singletonBean" class="cn.itcast.spring.c_xmlscope.SingletonBean" scope="singleton"/>

 

 

IoC容器装配Bean基于注解的配置方式:

<context:component-scan base-package="cn...包名"/>

@Component   相当于在spring容器中定义<bean id=”” class=””>

除了@Component外,Spring提供了3个功能基本和@Component等效的注解

@Service用于标注业务层组件、(如Service层)

@Controller用于标注控制层组件(如struts中的action层)

@Repository用于标注数据访问组件,(如DAO层组件)。

而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

属性依赖注入注解的方式:

@Value

@Autowired//默认按照类型注入

@Autowired//默认按照类型注入的

@Qualifier("customerDao")//必须配合@Autowired注解使用,根据名字注入

@Resource//默认按照名称进行匹配,再按照类型进行匹配

@Inject//默认按照类型注入

初始化方法和销毁方法注解:

使用 @PostConstruct 注解, 标明初始化方法 ---相当于 init-method 指定初始化方法

使用 @PreDestroy 注解, 标明销毁方法  ----相当于 destroy-method 指定对象销毁方法

作用域:

@Scope("prototype")//默认是单例(singleton),更改为多例(prototype)

 

 

 

 

核心二:AOP(Aspect Oriented Programming 面向切面编程),基于动态代理的功能增强方式。

应用场景:

记录日志,

监控性能,

权限控制,

缓存优化,

事务管理

 

传统的jdk的动态代理:需要接口

proxy.newproxyinstance(

目标类加载器,目标类接口,new invocationHandler(

invoke方法(obj,method,args)

)

cglib动态代理:不需要接口

  1. Jdk代理:基于接口的代理,一定是基于接口,会生成目标对象的接口类型的子对象。
  2. Cglib代理:基于类的代理,不需要基于接口,会生成目标对象类型的子对象。

Spring默认使用的是jdk自带的动态代理,如果类没有接口,那么会采用cglib动态代理的方式

aspectj的方式进行代码增强

aop编程的三大步骤

配置被增强的类,

配置增强的类,

切入点,aspectj,pointCut

注解方式:

  <!-- 1。确定目标 -->

    <!-- 扫描bean组件 -->

    <context:component-scan base-package="cn.itcast.spring"/>

    <!-- 2:编写通知 -->

   

    <!-- 3:配置aopaspectj的自动代理:

           自动扫描bean组件中,含有@Aspect的bean,将其作为aop管理,开启动态代理    -->

<aop:aspectj-autoproxy/>

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值