SSM框架学习笔记01 | 注解开发

文章目录

  • [1. 注解形式定义bean](#1. 注解形式定义bean)
  • 2.纯注解开发
  • 3.bean管理
  • [4. 依赖注入](#4. 依赖注入)
  • [5. 第三方bean管理](#5. 第三方bean管理)
  • 总结

1. 注解形式定义bean

@Compoenet

  • @Controller
  • @Service
  • @Repository
    配合代码块 <context:component-scan /> 使用

2.纯注解开发

@Configuration
@ComponentScan
AnnotationConfigApplicationContext 获取容器对象

3.bean管理

对于bean的作用范围,使用@Scope定义。@Scope("singleton")表示范围

使用@PostConstruct、@PreDestroy定义bean生命周期

4. 依赖注入

(1)自动装配
@Autowired:注入引用类型,自动装配模式,默认按类型装配,推荐使用。
@Qualifier("bean名称"):自动装配bean时按bean名称装配(多个相同类型的注入时),且此注解无法单独使用,必须依赖@Autowired注入,一般不使用。

注意:自动装配基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据,因此无需提供setter方法;

自动装配建议使用无参构造方法创建对象(默认),如果不提供对应构造方法,请提供唯一的构造方法。

(2)简单类型注入
@Value("值")
@PropertySource({"jdbc.properties"}) + @Value("${name}") :@PropertySource({"jdbc.properties"}) 写到config文件中,如果有多个properties文件,用数组形式,如{"jdbc1.properties", "jdbc2.properties", "jdbc3.properties"},资源配置的占位符 * 不被允许,即 {"*.properties"} 不是代表所有文件。

5. 第三方bean管理

1.定义一个方法获得要管理的对象

2.添加@Bean,表示当前方法的返回值是一个bean
@Bean修饰的方法,形参根据类型自动装配

方式一:导入式 使用 @Import 注解手动加入配置类到核心配置,此注解只能添加一次,多个数据使用数组形式

方式二:扫描式 使用 @ComponentScan 种族接扫描配置类所在包(不推荐)

简单类型依赖注入:@Value

引用类型依赖注入:为bean定义方法设置形参即可,容器会根据类型自动装配对象

java 复制代码
public class JdbcConfig {
    //1.定义一个方法获得要管理的对象
    @Value("com.mysql.jdbc.Driver")
    private String driver;
    @Value("jdbc:mysql://localhost:3306/spring_db")
    private String url;
    @Value("root")
    private String userName;
    @Value("root")
    private String password;
    //2.添加@Bean,表示当前方法的返回值是一个bean
    //@Bean修饰的方法,形参根据类型自动装配
    @Bean
    public DataSource dataSource(BookDao bookDao){
        System.out.println(bookDao);
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}
java 复制代码
public class App {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
        DataSource dataSource = ctx.getBean(DataSource.class);
        System.out.println(dataSource);
    }
}

总结

XML配置与注解配置比较

相关推荐
特立独行的猫A11 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
Rabitebla17 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件18 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
budingxiaomoli18 小时前
Spring统一功能处理
java·后端·spring
一个天蝎座 白勺 程序猿18 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石19 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
Flynn Liang20 小时前
可观测性与成本治理:一次对话的 17 个观测点
java·langchain·可观测性·micrometer·langchain4j·token 成本·llm 监控
金銀銅鐵20 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令
java·jvm
坤坤子吖21 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
文丑颜不良啊1 天前
LeetCode2821~2840题目解析
java·leetcode