bean 注解 AOP | DAY9

容器?什么是容器?核心方法有哪些?

在spring中容器一般是指存放bean的组件 负责bean的实例化 获取以及销毁等生命周期管理

核心方法主要有

Spring容器的核心方法包括:

  1. Bean的创建和初始化:容器负责根据配置文件或注解创建Bean实例,并进行必要的初始化操作,如设置属性值、调用初始化方法等。
  2. 依赖注入(DI):容器通过DI技术将Bean之间的依赖关系注入到相应的Bean中,使得Bean能够正确地引用其他Bean或资源。
  3. Bean的生命周期管理:容器负责管理Bean的生命周期,包括Bean的创建、初始化、使用、销毁等阶段。
  4. 作用域管理:容器提供了多种作用域类型(如单例、原型等),用于管理Bean的作用域和生命周期。
  5. 事件处理:容器还提供了事件处理机制,允许Bean之间通过事件进行通信和交互。

容器加载方式 (允许同时加载多个文件)

//加载类路径下的配置文件
ApplicationContext ctx1=new ClassPathXmlAppliacationContext(" ");

//从文件系统下加载配置文件
ApplicationContext ctx2=new FileSystemXmlAppliacationContext(" ");

获取bean方式

//使用bean名称
BookDao bookDao=(BookDao)ctx.getBean("bookDao");
//使用bean名称并指定类型
BookDao bookDao=ctx.getBean("bookDao",BookDao.class);
//使用bean类型
BookDao bookDao=ctx.getBean(BookDao.calss);

 使用类型获取bean bean只能有一个

注解开发定义bean

使用@Component定义bean

配置文件 <context:component-scan     base-package指定位置 > 

@Component提供衍生注解   数据层 @Repository  控制层@Controller   业务层  @Service

Spring3.0升级纯注解模式  使用java类替代了核心配置文件

@Configuration  表示配置类 设置当前类为配置类

@ComponentScan  用于设定扫描路径 此注解只能添加一次 多个路径使用数组{}

所以起初读取配置文件的初始化容器 改为 加载配置类初始化容器

ApplicationContext ctx = new AnnotationConfigAppliactionContext(配置类)

配置类注解

作用范围 @Scope   prototype多例  singleton单例

生命周期设置

@PostConstruct 构造方法后运行

@PreDestroy 销毁前运行

依赖注入自动装配

@Autowired 强行注入  如果多个相同类型的bean 添加@Qualifier指定名称  

注意 自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据 因此无序提供setter方法;自动装配建议使用无参构造方法创建对象 如果不提供对应方法 请提供唯一构造方法

加载外部properties文件 使用@PropertySource注解加载properties文件

第三方bean管理 

将独立的配置类加入核心配置

方式一 导入式

public class JdbcConfig{
    @bean
    public DataSource dataSource(){
        DruidDataSource ds=new DruidDataSOurce();
        //
        return ds;
    }
}


//使用@import注释手动加入配置类到核心配置 次注解只能添加一次 多个数据使用数组格式
@Configuration
@Import(JbcConfig.clss)
public class SpringConfig{
}

方式二 扫描式 不推荐

@Configuration
public class JdbcConfig{
    @Bean
    public DataSource dataSurce(){
        DruidDataSource ds =new DruidDataSource();
            //
        return ds;
    }
}

使用@ComponentScan注解扫描配置类所在的包 加载对应的配置类信息
@Configuration
@Configuration({ , })
public clsss SpringConfig{
}

功能xml配置注解
定义bean

bean标签

id属性

class属性

@Component

@controller

@Service

@Repository

@ConmponentScan

设置依赖注入

setter注入

构造器注入

自动装配

@Autowried

@Qualifier

@Value

配置第三方bean

bean标签

静态工厂 实例工厂 FactoryBean

@Bean
作用范围scope属性@Scope
生命周期

标准接口

init-method

destroy-method

@PostConstructor

@PreDestroy

AOP

什么是AOP?

面向切面编程  作用 在不惊动原始设计的基础上为其进行功能增强 (无侵入式编程)

核心概念

连接点 程序执行过程中的任意位置 

切入点 匹配连接点的式子

在SpringAOP中 一个切入点可以是一个方法 也可以是多个

通知 在切入点处执行的操作 也就是共性功能

通知类 定义通知的类 

切面 描述通知与切入点的对应关系

思路分析

导入坐标(pom.xml)aspectjweaver

制作连接点方法

制定共性功能(通知类与通知)

定义切入点

切入点定义依托一个不具有实际意义的方法进行 无参数 无返回值 方法体无实际逻辑

public class MyAdvice{
    @Pointcut("execution(void com.)")
    private void pt(){}
}

绑定切入点与通知类关系

public class MyAdvice{
    @Pointcut("execution(void com.)")
    private void pt(){}


    @Before("pt()")
    public void before(){
         //
    }
}

定义通知类受Spring容器管理 并定义当前类为切面类

@Component
@Aspect
public class MyAdvice{
    @Pointcut("execution(void com.)")
    private void pt(){}


    @Before("pt()")
    public void before(){
         //
    }
}

开启Spring对AOP注解驱动支持

@Configuration
@ComponentScan()
@EnableAspectJAutoProxy

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值