Spring 开启注解扫描

1,引入spring-aop 模块

2,使用 <context:component-scan base-package="xxx.yyy" /> 方式开启组件扫描

常用的4种创建Bean的注解:

  • @Component
  • @Controller
  • @Service
  • @Repository

3,对组件扫描的一些配置说明

<beans>
    <context:component-scan base-package="org.example">
        <context:include-filter type="regex"
                expression=".*Stub.*Repository"/>
        <context:exclude-filter type="annotation"
                expression="org.springframework.stereotype.Repository"/>
    </context:component-scan>
</beans>

官网的示例,

include-filter 表示接受正则表达式类型,符合expression的类会被扫描;

exclude-filter 表示类型为 @Repository的注解不会被扫描。

4,属性注入

  • @Autowired  根据属性类型注入

    如果有多个同类型的Bean,注入的时候需要@Qualifier来区分。

  • @Qualifier     根据属性名称注入,和 @Autowired 一起使用
  • @Resource   可以根据类型,可以根据名称注入。 JDK提供,不是Spring自带。

    @Resource  //默认根据类型注入

    @Resource(name="xx") //根据名称xx注入

  • @Value         注入普通类型的属性

@Repository(value = "user1")
public class UserDao {
    public void selectUser(){
        System.out.println("Select User.");
    }
}
@Service
public class UserService {

    @Value(value = "xharvard")
    private String userName;

    @Autowired
    private UserDao userDao;

    @Resource
    private UserDao userDaoForResource;

    @Autowired
    @Qualifier(value = "user1") // value必须与@Repository(value = "user1") 一致
    private UserDao userDaoForQualifier;

    public void getUser() {
        userDao.selectUser();
        System.out.println(userName);
        userDaoForResource.selectUser();
        userDaoForQualifier.selectUser();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

  <!-- 开启自动注解扫描 -->
  <context:component-scan base-package="org.xharvard.ioc.annotation"/>
</beans>

测试

public class AnnotationDemo {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/context-annotation.xml");
        UserService userService = context.getBean("userService", UserService.class);
        userService.getUser();
    }
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值