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提供的文档。