Bean Java配置
2024-09-03 07:55:09
Spring 系列教程
- Spring 框架介绍
- Spring 框架模块
- Spring开发环境搭建(Eclipse)
- 创建一个简单的Spring应用
- Spring 控制反转容器(Inversion of Control – IOC)
- 理解依赖注入(DI – Dependency Injection)
- Bean XML 配置(1)- 通过XML配置加载Bean
- Bean XML 配置(2)- Bean作用域与生命周期回调方法配置
- Bean XML 配置(3)- 依赖注入配置
- Bean XML 配置(4)- 自动装配
- Bean 注解(Annotation)配置(1)- 通过注解加载Bean
- Bean 注解(Annotation)配置(2)- Bean作用域与生命周期回调方法配置
- Bean 注解(Annotation)配置(3)- 依赖注入配置
- Bean Java配置
- Spring 面向切面编程(AOP)
- Spring 事件(1)- 内置事件
- Spring 事件(2)- 自定义事件
前面介绍了Bean的XML配置方法,从Spring 3.0开始,可以使用java代码配置Bean,替代XML配置。
Java配置与注解配置不同,Java配置是把Java代码文件当作配置文件,注解配置是在实际Java类中使用注解设置依赖关系。
Java配置也会用到一些注解,主要有:@Configuration
、@ComponentScan
和@Bean
。
1. 通过@Configuration注解创建Java配置类
@Configuration
注解标注的类是配置类,用于配置Bean之间依赖关系。
@Import
注解允许从另一个配置Java/XML文件加载bean定义。
示例:SpringConfig.java
package com.qikegu.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ComponentScan;
@Configuration // 表明这是个Bean的Java配置类
public class SpringConfig {
}
2. 通过@Bean注解定义Bean
要定义一个Bean,可以通过:
- 给一个方法加
@Bean
注解 - 方法返回Bean实例
Spring容器会注册这个Bean,并将方法名作为Bean ID。
示例:SpringConfig.java
package com.qikegu.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
// 定义 App Bean
@Bean(initMethod = "init", destroyMethod = "close" ) // 指定初始化回调,销毁回调
@Scope("prototype") // 设置Bean作用域
public App app() { // Bean ID = app
return new App(); // 返回App Bean
}
}
3. 注入Bean依赖关系
可以通过让一个Bean方法调用另一个Bean方法注入依赖项。
示例:SpringConfig.java
package com.qikegu.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
// 定义 App Bean
@Bean
public App app() {
return new App(logger()); // 调用Bean方法logger()注入Logger Bean实例
}
/* @Bean
public App app() {
App app = new App();
Service[] services = {database(), logger(), mail()};
app.setServices(services);
app.setMainService(services[1]);
app.setId(1234);
return app;
} */
// 定义 Database Bean
@Bean
public Database database() {
return new Database();
}
// 定义 Logger Bean
@Bean
public Logger logger() {
return new Logger();
}
// 定义 Mail Bean
@Bean
public Mail mail() {
return new Mail();
}
}
4. 读取配置类
可以使用AnnotationConfigApplicationContext
读取配置类。
示例:Test.java
package com.qikegu.demo.config;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) {
// 使用`AnnotationConfigApplicationContext`读取配置类
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
}
}
5. 通过Spring容器获取bean
示例:
App app = context.getBean("app", App.class);
最新文章
- iOS通用的MVC模式项目框架MobileProject
- [转]Java Thread Dump 性能分析
- 夺命雷公狗---DEDECMS----24dedecms让网站头部分离
- 引擎设计跟踪(九.14.2e) DelayLoaded DLLs (/DELAYLOAD)
- hdoj 1061 Rightmost Digit【快速幂求模】
- python s12 day3
- 洛谷 P1412 经营与开发
- JS左侧菜单-02
- Windows快捷键大全(从XP到win8.1)
- maven 项目发布时,无法引用 修改的domain 问题
- LeetCode 404. Sum of Left Leaves (左子叶之和)
- 【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles
- 作用域和闭包(二)this
- Docker(十四)-Docker四种网络模式
- Liunx软Raid实现
- ACM-ICPC 2018 沈阳赛区网络预赛 K题
- (转)以太坊(Ethereum ETH)的奖励机制
- 利用webpack手动构建vue工程
- ps自由变换以及再次变换快捷键
- Hadoop(HA)分布式集群部署