JavaWeb学习笔记-spring-06-ioc-基于注解配置

基于注解配置

Spring容器成功启动的三大要件

  • Bean定义信息
  • Bean实现类
  • Spring本身
@Component("userDao")
public class UserDao{
}

等效于

<bean id="userDao" class="com.smart.UserDao">
  • @Commonent
  • @Repository//dao
  • @Service//service
  • @Controller//controller
<?xml vsersion="1.0" encoding="UTF-8"?>
<!--context命名空间,通过扫描类包以应用注解定义bean-->
<benas xmlns="http://www.springframework.org/schema/benas"
    xmlns:xsi="http://www.w2.org/2001/XMLScheam-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLoaction="http://www.springframework.org/schema/benas
    http://www.springframework.org/schema/benas/spring-benas-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    <context:component-scan base-package="com.smart.anno"/>
</beans>
<!--resource-pattern属性过滤出特定的类,默认**/*.class-->
<context:component-scan base-package="com.smart" resource-pattern="anno/*.class"/>
<context:component-scan base-package="com.smart">
    <!--包含目标类,可拥有若干include-filter-->
    <context:include-filter type="regex" expression="com\.smart\.anno.*"/>
    <!--排除目标类,可拥有若干exclude-filter-->
    <context:exclude-filter type="aspectj" expression="com.smart..*Controller+"/>
</context:component-scan>

include-filter/exclude-filter支持多类型过滤表达式
类别 示例
annotation com.smart.XxxAnnotation//所有标注了XxxAnnotation的类
assignable com.smart.XxxService//所有继承或扩展XxxService的类
aspectj com.smart..*Service+//所有类名以Service结束的类及继承或扩展的类
regex com.smart.anno..*//所有anno类包下的类
custom com.smart.XxxTypeFilter//实现TypeFilter接口,采用XxxTypeFile过滤规则

自动装配bean

//@Service标注bean
@Service
public class LogonService{
    //按默认类型匹配的方式,在容器中查找匹配bean
    @Autowired
    private LogDao logDao;
    @Autowired
    private UserDao userDao;
}

@Autowired的required属性

@Service
public class LogonService{
    //如果没有匹配的bean,spring启动时将报错
    //required=false标注,不抛出异常,默认为true
    @Autowired(required=false)
    private LogDao logDao;
    @Autowired
    private UserDao userDao;
}

@Qualifier

@Service
public class LogonService{
    @Autowired
    private LogDao logDao;
    //Qualifier指定注入bean名称
    @Autowired
    @Qualifier("userDao")
    private UserDao userDao;
}

对方法进行标注

@Service
public class LogonService{
    private LogDao logDao;
    private UserDao userDao;
    @Autowired
    public void setLogDao(LogDao logDao){
        this.logDao logDao;
    }
    @Autowired
    @Qualifier("userDao")
    public void setUserDao(UserDao userDao){
        this.userDao = userDao;
    }
}
@Autowired
public void init(@Qualifier("userDao")UserDao userDao,LogDao logDao){
    this.userDao = userDao;
    this.logDao = logDao;
}

对集合进行标注

@Component
public class MyComponent{
    //spring会将容器内所有类型为plugin的bean注入
    @Autowired(required = false)
    private List<Plugin> plugins;
    public List<Plugin> getPligins(){
        return plugins;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值