Spring入门IOC(五)

    基于注解开发一直都是推荐的开发方式,合理地使用注解,可以达到0配置的效果,本文介绍一下关于Spring的基于注解开发。

    首先的,Spring的核心配置文件中需要加入相应约束,并加入标签,如下:

<beans xmlns="http://www.springframework.org/schema/beans"        
    xmlns:mvc="http://www.springframework.org/schema/mvc"     
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"              
    xsi:schemaLocation="                                               
            http://www.springframework.org/schema/beans    
            http://www.springframework.org/schema/beans/spring-beans.xsd    
            http://www.springframework.org/schema/context     
            http://www.springframework.org/schema/context/spring-context.xsd    
            http://www.springframework.org/schema/mvc    
            http://www.springframework.org/schema/mvc/spring-mvc.xsd  
            http://www.springframework.org/schema/tx   
            http://www.springframework.org/schema/tx/spring-tx.xsd  
            http://www.springframework.org/schema/aop  
            http://www.springframework.org/schema/aop/spring-aop.xsd "  
    default-autowire="byName">

	<context:component-scan base-package="lfq.ima"></context:component-scan>
</beans>

    标签为context:component-scan,很容易从字面上翻译,这是一个组件扫描标签,其中的base-package属性可以加入包名,将一个包内的带组件注解的类加入到Spring容器当中:

    如下:

@Component("userDao")
public class UserDao {
	@Autowired
	private UserDao2 userDao2;

	public UserDao2 getUserDao2() {
		return userDao2;
	}

	public void setUserDao2(UserDao2 userDao) {
		this.userDao2 = userDao;
	}

	public void say()
	{
		System.out.println("hello!");
		userDao2.say();
	}
}

    除了Component以外还有三种组件注册注解提供使用,分别是@Controller、@Service、@Repository,分别标注为控制层、业务逻辑层、持久层的组件。其实和Component并无太大的差别,一方面方便区分模块,一方面方便后期Spring的功能扩展。

    属性注入方面,提供了几个注解,其中就有@AutoWired、@Resource,两者都可以完成对象依赖的注入,区别在于前者默认按照类型注入(寻找相同类型的对象注入),后者默认按照bean的name注入,先bean名字和属性名字对应注入,否则就按照类型注入。前者默认对象必须要存在,如果允许对象为空需要添加@AutoWired(required=false)。前者当我们需要强制使用bean的名字注入时,需要配合@Autowired() @Qualifier("baseDao")如此使用,而后者则可以直接@Resource("baseDao")。前者为Spring提供,后者为Java提供。

    注:<context:annotation-config/>是用于开启bean中注入注解的扫描,依旧还是要将bean写进配置文件中。<context:component-scan base-package="lfq.ima"></context:component-scan>不仅有着前者的功能,而且还能扫描包下的组件。

    上述为最简单的bean注册注解以及注入注解介绍,下面深入讲解一下以上注解。

    首先,除了@Resource和@Autowired以外还有@Value可以实现简单数据的注入,这是关于注入注解的完善解释。

    组件扫描注解仅仅只有以上注解当然也是完全不够的,要知道,一个bean还有着scope属性,所以,就有了@Scope用于标记bean的类型,单例或者多例。@PostConstruct :相当于 init-method;@PreDestroy :相当于 destroy-method。

    下图为基于XML和基于注解开发的异同:

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值