四、基于Annotation的bean
最后更新于:2022-04-01 11:38:13
Annotation:
Dtd和xsd约束了xml文件的语法。这里引入了context前缀的标签语法.用来使用注解
通过引入context标签。运用注解来注入。请看下面的代码案例:
详细请看注释
1、 Xml代码:
~~~
<?xml version="1.0" encoding="UTF-8"?>
<!-- xsd文件,约束本xml可以用的标签 -->
<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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!-- 运用上面引入的命名空间标签.初始化了4个bean
1、AutowiredAnnotationBeanPostProcessor
2、CommonAnnotationBeanPostProcessor
3、PersistenceAnnotationBeanPostProcessor
4、 RequiredAnnotationBeanPostProcessor
-->
<context:annotation-config/>
<bean id="userDao" class="com.spring.dao.UserDaoImpl"></bean>
<bean id="userService" class="com.spring.service.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
<bean id="userAction" class="com.spring.action.UserAction">
</bean>
</beans>
~~~
2、 Java代码:
~~~
public class UserAction {
private UserService userService;
//Autowired使用的是byType类型的注入。如果配置文件中有两个bean的话那么将出现异常
@Autowired
//@Qualifier的value属性可以指定bean的name。这样的话就不怕配置2个bean和byName的原理一样。@AutoWired和@Qualifier配合使用可以
public void setUserService(@Qualifier(value="userService") UserService userService) {
this.userService = userService;
}
public void addUser(){
userService.HelloWorld();
}
}
~~~
另外还有一个注解是@Required。在这里就不多说了。其实有和没有的意义都不是很大。大家有兴趣的话可以看一看Spring的API