软件设计之SSM(4)

软件设计之SSM(4)

路线图推荐:
【Java学习路线-极速版】【Java架构师技术图谱】
尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发
资料可以去尚硅谷官网免费领取

学习内容:

基于配置类方式管理Bean

  1. 完全注解开发
  2. 第三方jar包类添加进ioc容器
  3. 如何引用其他的ioc组件

1、完全注解开发

Spring 完全注解配置(Fully Annotation-based Configuration)是指通过 Java配置类代码来配置 Spring 应用程序,使用注解来替代原本在 XML 配置文件中的配置。相对于 XML 配置,完全注解配置具有更强的类型安全性和更好的可读性。

  • 依靠注解,无法摆脱独立于XML配置,还需要第三方类配置、扫描配置、引入外部资源配置

在这里插入图片描述

注解介绍

将一个类作为Spring 的配置类

注解描述用法示例
@ComponentScan用于自动扫描指定包及其子包中的 Spring 组件(如 @Component、@Service、@Repository、@Controller)。@ComponentScan(basePackages = "com.example")
@PropertySource用于加载外部属性文件,以便在 Spring 应用程序中使用这些属性。@PropertySource("classpath:application.properties")
@Configuration表示该类可以使用 Spring IoC 容器作为源定义 bean 的来源。@Configuration public class AppConfig { ... }
package com.atguigu.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
 * 使用 @Configuration 注解将一个普通的类标记为 Spring 的配置类。
 * description:java的配置类,替代xml配置文件
 * 1 包扫描注解配置
 * 2 引用外部的配置文件
 * 3 声明第三方依赖的bean
 * 步骤1: 添加@Configuration 代表是配置类
 * 步骤2: 实现上面的三个功能注释
 */
@ComponentScan("com.atguigu.ioc_01")
@PropertySource(value = "classpath:jdbc.properties")
@Configuration
public class JavaConfiguration {
}

实际使用

依旧是两步:

  • 创建容器,通过AnnotationConfigApplicationContext
  • 获取bean,通过getbean
        //1 创建容器
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(JavaConfiguration.class);
        //2 获取bean
        StudentController bean = applicationContext.getBean(StudentController.class);
        System.out.println(bean);

2、第三方jar包类添加进ioc容器

场景设计:将Druid连接池对象存储到IoC容器

@ComponentScan("com.atguigu.ioc_01")
@PropertySource(value = "classpath:jdbc.properties")
@Configuration
public class JavaConfiguration {
    @Value("${jdbc.user}")
    String username;
    @Value("${jdbc.password}")
    String password;
    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driver}")
    String driverClassName;
    /*
    <bean ->一个方法
    方法的返回值类型 == bean组件的类型或者它的接口和父类
    方法的名字 = bean id
    方法体自定义实现过程
    方法上添加@Bean  :会让通过配置类的方法创建的组件存储到ioc容器中
    * */
    @Bean
    public DruidDataSource dataSource(){
            //使用Java代码实例化
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setUrl(url);
            dataSource.setDriverClassName(driverClassName);
            //返回结果即可
            return dataSource;
    }
}

Bean name设置

在Spring框架中,@Bean注解用于定义一个Bean,默认情况下,Bean的名字是方法的名字
如果你想显式指定Bean的名字,可以在@Bean注解中传入一个自定义的名字:

  • 在@Bean注解中,name属性和value属性其实是等价的,二者都可以用于指定Bean的名字
 @Bean(name = "customServiceName")
 @Bean(value = "customServiceName")

周期方法如何指定

  • 原有注解方案: PostConstruct + Predestory 注解指定
  • 在定义Bean时,可以通过@Bean注解的initMethoddestroyMethod属性来指定初始化方法和销毁方法。这些方法应该在对应的Bean类中定义。

3、如何引用其他的ioc组件

  • 方案1: 直接调用方法返回 Bean 实例:在一个 @Bean 方法中直接调用其他 @Bean 方法来获取 Bean 实例,虽然是方法调用,也是通过IoC容器获取对应的Bean
  • 方案2:参数引用法:通过方法参数传递 Bean 实例的引用来解决 Bean 实例之间的依赖关系
    • 当引用的参数组件有多个,比如组件A有id为AA和id为aa的两个组件,在A组件作为参数时,需要指定其中一个id作为形参名称
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值