Spring 的 Bean 管理(注解方式)

Spring 的 Bean 管理(注解方式)

Spring 的 Bean 管理(注解方式)1. 导入必要的 jar 包和 xml 文件使用注解需要导入 spring-aop 的 jar 包。applicationContext.xml 文件使用下行注解:代码语言:javascript复制xmlns:context="http://www.springframework.org/schema/context"2. 使用注解定义 BeanSpring2. 5 引入使用注解去定义 Bean。

@Component 描述 Spring 框架中 Bean除了 @Component 外,Spring 提供了 3 个功能基本和 @Component 等效的注解

@Repository 用于对 DAO 实现类进行标注@Service 用于对 Service 实现类进行标注@Contoller 用于对 Controller 实现类进行标注这三个注解是为了让标注类本身的用途清晰,Spring 在后继版本会对其增强。

举个例子:

代码语言:javascript复制@Repository("userDao")

public class UserDao {

public void save() {

System.out.println("Dao 中保存用户。。。");

}

}

3. Spring 的属性注入 -- 注解方式A. 使用@Autowired 进行自动注入@Autowired 默认按照类型进行注入。如果存在两个相同的 Bean 类型相同,则按照名称注入@Autowired 注入时可以针对成员变量或者 set 方法。如果属性提供 setter 方法,注解要加在 setter 方法上;如果属性没有提供 setter 方法,注解直接加在属性上就可以。通过 @Autowired 的 required 属性,设置一定要找到匹配的 BeanB. 使用 @Qualifier 指定注入 Bean 的名称使用 @Qualifier 指定注入 Bean 的名称使用 @Qualifier 指定 Bean 名称后,注解 Bean 必须指定相同名称代码语言:javascript复制// 必须同时使用

@Autowired

@Qualifier //按照名称来注入举个例子:

代码语言:javascript复制@Component("userService")

public class UserService {

// 直接使用注解,不用另外写setter和getter方法

@Value("米饭")

private String something;

//自动注入UserDao类

@Autowired

//使用名称注入

@Qualifier("userDao")

private UserDao userDao;

public void eat() {

System.out.println("eat:" + something);

}

public void save() {

System.out.println("Service 中保存用户。。。");

userDao.save();

}

}

C. @Resource 进行属性注入Spring 提供对 JSR-250中定义 @Resource 标准注解的支持@Resource 和 @Autowired 注解功能相似简单来说:

代码语言:javascript复制@Resource = @Autowired + @Qualifier举个例子:

代码语言:javascript复制@Component("userService")

public class UserService {

@Resource(name = "userDao")

private UserDao userDao;

public void save() {

System.out.println("Service 中保存用户。。。");

userDao.save();

}

}

D. 总结普通类型:@Value对象类型:代码语言:javascript复制@Autowired

@Qualifier("Beanname")

@Resource(name = "Beanname")4. Spring 的其他注解Spring 初始化 bean 或销毁 bean 时,有时需要作一些处理工作,因此 spring 可以在创建和拆卸 bean 的时候调用 bean 的两个生命周期方法。

xml 的配置如下:

代码语言:javascript复制当 bean 被载入到容器的时候调用 setup当 bean 从容器中删除应用的时候调用 teardown(scope=singleton 默认)转换为注解方式:

@PostConstruct 初始化PreDestory 销毁举个例子:

代码语言:javascript复制@Component("bean1")

public class Bean1 {

@PostConstruct

public void init() {

System.out.println("initBean...");

}

public void say() {

System.out.println("say...");

}

@PreDestroy

public void destroy() {

System.out.println("destroyBean...");

}

}

5. Bean 的作用范围使用注解配置的 Bean 和 配置的一样,默认作用范围都是 singleton@Scope 注解用于指定 Bean 的作用范围举个例子:

代码语言:javascript复制@Component("bean2")

@Scope("prototype")

public class Bean2 {

//....

}

6. 传统 XML 配置和注解配置混合使用XML 方式的优势结构清晰,易于阅读

注解方式的优势开发便捷,属性注入方便

XML 与注解的整合开发引入 context 命名空间代码语言:javascript复制xmlns:context="http://www.springframework.org/schema/context"在配置文件中添加 context:annotation-config 标签代码语言:javascript复制PS:

是单独使用属性注解。

相关文章

像鼠一样的猴子,爬树速度慢却会“飞翔”鼯猴
microsoft365破解版

像鼠一样的猴子,爬树速度慢却会“飞翔”鼯猴

🕒 07-19 👁️ 9234
国内钽金属市场与回收:你的“废料”可能是下一个“财富风口”!
Seven Stars(七星)香烟价格表2024汇总一览(多少钱一条)
365b体育最新下载地址

Seven Stars(七星)香烟价格表2024汇总一览(多少钱一条)

🕒 08-14 👁️ 2818
新手上路老是记不得路线怎么办?五大窍门助你轻松记下行驶路线
50元收个恩兔n2
microsoft365破解版

50元收个恩兔n2

🕒 02-03 👁️ 1633
新能源电车搭电小技巧😎😎遇到新能源电车没电了
日博best365下拉飞机XLCOKK

新能源电车搭电小技巧😎😎遇到新能源电车没电了

🕒 11-22 👁️ 752
冒险岛2弓箭手各流派技能加点解析及装备宝石选择推荐
365b体育最新下载地址

冒险岛2弓箭手各流派技能加点解析及装备宝石选择推荐

🕒 08-25 👁️ 8593
数据库>阿联酋 vs 日本
日博best365下拉飞机XLCOKK

数据库>阿联酋 vs 日本

🕒 01-31 👁️ 5677
sali是哪个保险公司的标志?
microsoft365破解版

sali是哪个保险公司的标志?

🕒 09-14 👁️ 8133