2020年12月15日-笔记

注解

@Resource(name='')

根据id和类型进行查找,指定name后根据id查找。

@Autowired

根据id和类型进行查找

@Qualifier(value='')

指定value后查找

@Component

//组件,等价于
<bean id="user" class="com.kuang.pojo.User"/>
//有几个衍生注解
//dao @Repository
//service @Service
//controller @Controller
//扫描指定包,使注解自动生效
<context:component-scan base-package="com.kuang"/>
//使用注解
<context:annotation-config/>
//四个注解功能都一样,都是代表将某个类注入到Spring中,装配Bean

Configuration

package com.gao.config;

import com.gao.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//这个也会托管到spring容器中,因为他本来就是一个@Component
//配置类
@Configuration
public class GaoConfig {

    //注册一个bean
    @Bean
    public User getUser() {
        return new User();
    }
}
//类
package com.gao.pojo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class User {
    public String name;

    public String getName() {
        return name;
    }

    @Value("gaoshuai")
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}
import com.gao.config.GaoConfig;
import com.gao.pojo.User;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class MyTest {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(GaoConfig.class);
        User getUser = (User) context.getBean("getUser");
        System.out.println(getUser.getName());
    }
}

AOP

横向业务开发,横切进一个新的业务逻辑。不改变原有代码的情况下,添加新的业务逻辑。

代理模式

SpringAOP的底层
代理模式的分类

  • 静态代理
  • 动态代理

角色分析

  • 抽象角色:一般会使用接口或者抽象类来解决(业务层,需要干那些事)
  • 真实角色:被代理的角色(实现业务层,真正去干一些事)
  • 代理角色:代理真实角色,代理真实角色后,会做一些操作
  • 客户:访问代理对象的人

动态代理

动态代理的代理类是动态生成的,不是直接写好的,分为两大类:基于接口,基于类。
基于接口:jdk的动态代理
基于类:cglib
java字节码实现:javassist
使用jdk,需要知道两个类:Proxy:代理,InvocationHandler:调用处理程序。

  • 横切关注点:与业务逻辑无关,但是我们需要关注的部分,日志,安全,缓存,事物等。
  • 切面:横切关注点被模块化的类,如 Log 类。
  • 通知:切面要完成的工作,类中的方法。
posted @ 2020-12-15 17:55  丶ezio丶  阅读(74)  评论(0)    收藏  举报