`
chinrui
  • 浏览: 93899 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Spring IoC Annotation 的简单使用

阅读更多
Spring IOC Annotation

进行Annotation-based Configuration配置
在beans.xml里面的beans标签里面加入下列的属性
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

添加标签<context:annotation-config/>
声明可以使用注解即Annotations
@Autowired注解,作用:自动注入,不用指定要注入的bean的名字和类型,默认的方式为byName,如果通过byName找不到相应bean,就会按byType进行查找,一般注解加在set方法上
beans.xml的配置:
<?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
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
  <context:annotation-config/>
  
  <bean id="u1" class="com.edu.hpu.impl.UserDAOImpl">
  	<property name="daoID" value="1" />
  </bean>
  
  <bean id="u" class="com.edu.hpu.impl.UserDAOImpl">
  	<property name="daoID" value="2" />
  </bean>

  <bean id="userService" class="com.edu.hpu.service.UserService" >
  </bean>
</beans>

@Autowired
public void setUserDAO(UserDAO userDAO) {
	this.userDAO = userDAO;
}

如果想要特定的指定一个实例对象,可以使用@Qualifier(value="u")标签
@Autowired
public void setUserDAO(@Qualifier(value="u") UserDAO userDAO) {
	this.userDAO = userDAO;
}

当进行注入的时候也可以使用注解@Resource(javax.annotation.Resource),作用和@Autowired一样,查找bean的方式默认是byName,如果通过byName找不到相应的bean,则通过byType进行查找
@Resource
public void setUserDAO(@Qualifier(value="u") UserDAO userDAO) {
	this.userDAO = userDAO;
}

当存在的多个相同类型的bean且没有与set方法对应的属性名一样的时候,会报错,也可以通过Resource的name属性进行特定bean对象的指定
@Resource(name="u")
public void setUserDAO(UserDAO userDAO) {
	this.userDAO = userDAO;
}

如果不想在beans.xml写bean的配置的时候,可以使用@Component进行注解对应的bean,自动组合成可使用的组件,一般只有在类的作用层次不明确的时候使用@Component,如果类的作用层次明确使用下面给出的四个注解
在beans.xml里面进行如下配置:
<?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
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">
  <context:annotation-config/>
  <context:component-scan base-package="com.edu.hpu" />

  <bean id="userService" class="com.edu.hpu.service.UserService" >
  </bean>
</beans>

在UserDAOImpl类上面加上@Component注解
@Component
public class UserDAOImpl implements UserDAO {

使用@Component里面的value属性指定bean的名字
@Component(value="u")
public class UserDAOImpl implements UserDAO {

@Repository持久层bean注解 @Component不明确分层的注解可通用
@Service业务层的注解  @Controller控制层的注解

使用注解指定生存范围
@Scope(value="singleton")

使用注解指定生命周期
@PostConstruct
public void init() {
	System.out.println("init");
}
@PreDestroy
public void destroy() {
	System.out.println("destroy");
}

本文所述十分简短,如果想要知道具体的可参考spring提供的文档。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics