Spring笔记整理之IOC&DI&AOP

实现步骤

1.ApplicationContext就是表示Spring的容器。而 ClassPathXmApplicationContext 是经常用到的一个类,注意最后要传过去配置文件的地址。

注意:在创建Spring的容器时,就会创建配置文件中的所有的对象。有几个bean标签(bean标签里面的id是惟一的),就创建几个对象。

           默认调用无参构造

public class UserControllerTest {
    @Test
    public void testInit() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        UserService userService = context.getBean("userService", UserService.class);
        System.out.println(userService);

        context.close();
    }
}

下图是比较详细的说明。两张图中的getbean后面参数不一样,哪个都可以。

其他常用方法:

1.getbeanDefinitionCount:获取容器中对象的数量

2.getBeanDefinitionNames:获取所有对象的名字。这个是一个数组,需要遍历。 String names [] =ac.get~       for(String name:names)......

创建非自定义的对象:

首先bean标签里得有,名字叫mydate。Java.util.Date很明显不是自己定义的。

基于XML的DI(属性注入)

Set注入

基本类型的注入(简单类型)

(先执行无参构造,创造对象,再执行set方法,完成赋值,最后Spring调用set方法)

<bean id="xxx" calss="yyy">

      <property name="属性名字 value=该属性的值" "/>

       一个property只能给一个属性赋值

      <property.......>

<bean>

举例:

1)先写一个student dao类,有name,age,set和无参。

2)下面是application.xml中bean标签你想注入的东西。

3)测试类。测试类的编写直接 写public void test(){......}

引用类型的注入

语法规则:

构造方法注入: 

constructor-arg标签,构造方法中有几个参数,就写几个这个标签

<constructor-arg />标签中用于指定参数的属性有:

➢ name:指定参数名称。

➢ index:指明该参数对应着构造器的第几个参数,从0开始。不过,该属性不要也行,但要注意,若参数类型相同,或之间有包含关系,则需要保证赋值顺序要与构造器中的参数顺序一致。

➢value:构造方法的形参类型是简单类型,需使用value

➢ref:构造方法的形参类型是引用类型,需使用ref

使用index属性

引用类型的自动注入"

自动注入能解决什么问题:不必再写大量的<property name="school" ref="myschool">

ByName

ByType

基于注解的DI(属性注入)

步骤:

1.加入maven依赖 sprinf-context

2.在类中加入spring的注解(多个不同功能的注解)

3.在spring的配置文件中,加入一个组件扫描器的标签,说明注解在你项目中的位置。

4.使用注解创建对象,创建容器 ApplictionContext。

常用注解:

@Component @Repository @Service @Controller 

@Value @Annotation @Resource

下面这个图是重点

@Component 举例

简单类型的属性注入

@Value

测试类同上

引用类型的注入: @Autowired @Resource

@Autowired的用法

默认Bytype的方式

Byname方式

AOP

(Aspect Orient Programming),面向切面编程。面向切面编程是从动态角度考虑程序运行过程。

AOP底层,就是采用动态代理模式实现的。采用了两种代理:JDK的动态代理,与CGLIB的动态代理。 

AspectJ的切入点表达式

execution(访问权限 方法返回值 方法声明(参数) 异常类型)  红色是必须项,不可省略

使用aspectJ实现AOP的步骤

1.新建Maven项目

2.加入依赖:Spring,asceptJ,junit单元测试

3.创建目标类:接口和其实现类,给类中的方法增加功能。

4创建切面类:普通类

  4.1在类的上面加@Aspect

   4.2在类中定义方法,方法就是切面要执行的代码。在方法的上面加入aspect中的通知注解(共有 @Before,@After,@AfterReturning,@Around,@AfterThrowing)

   4.3需要的话指定切入点表达式execution()

5.创建Spring配置文件,申明对象,并交给容器管理。

6.测试类:从Spring容器中获取目标对象

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值