Spring源码的Bean管理之注解方式

1 什么是注解?

1 注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值…)

2 使用注解,注解作用在类上面,方法上面,属性上面

3 使用注解目的:简化 xml 配置

2 Spring中创建对象提供注解

  • @Component

  • @Service

  • @Controller

  • @Repository

3 对象创建案例

1 引入依赖

spring-aop-5.2.6.RELESE.jar

2 开启组件扫描

<!--开启组件扫描
 1 如果扫描多个包,多个包使用逗号隔开
 2 扫描包上层目录
-->
<context:component-scan base-package="com.cf"></context:component-scan>

3 在创建类上添加注解

@Component(value = "userService") 
// 等同于 <bean id="userService" class=".."/>
public class UserService {
 public void add() {
 System.out.println("service 新增.......");
 }
}

4 开启组件扫描

<!--示例 1
 use-default-filters="false" 表示现在不使用默认 filter,自己配置 filter
 context:include-filter ,设置扫描哪些内容
-->
<context:component-scan base-package="com.cf" use-default-filters="false">
 <context:include-filter type="annotation" 
 
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!--示例 2
 下面配置扫描包所有内容
 context:exclude-filter: 设置哪些内容不进行扫描
-->
<context:component-scan base-package="com.cf">
 <context:exclude-filter type="annotation" 
 
expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

5 注解方式注入

1 @Autowired

根据属性类型进行自动装配

@Service
public class UserService {
 // 定义 dao 类型属性
 // 不需要添加 set 方法
 // 添加注入属性注解
 @Autowired 
 private UserDao userDao;
 public void add() {
 System.out.println("service 新增.......");
 userDao.add();
 }
}
2 @Qualifier

根据名称进行注入

// 添加注入属性注解
// 根据类型进行注入
@Autowired 
// 根据名称进行注入
@Qualifier(value = "userDaoImpl1") 
private UserDao userDao;
3 @Resource

可以根据类型注入,可以根据名称注入

// @Resource //根据类型进行注入
@Resource(name = "userDaoImpl1") 
// 根据名称进行注入
private UserDao userDao;
4 @Value

注入普通类型属性

@Value(value = "abc")
private String name;

6 注解开发案例

1 配置类

替代xml配置文件

// 作为配置类,替代 xml 配置文件
@Configuration 
@ComponentScan(basePackages = {"com.cf"})
public class SpringConfig {
}
2 测试类
@Test
public void testService2() {
 // 加载配置类
 ApplicationContext context
 = new AnnotationConfigApplicationContext(SpringConfig.class);
 UserService userService = context.getBean("userService", 
UserService.class);
 System.out.println(userService);
 userService.add();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值