首先,需要说明的是,我所了解的注解有两套,一套是spring的注解,一套是jdk自带的注解,我们一般选择其中一套即可,我比较推荐spring的注解
Spring注解:
首先我们需要在spring的配置文件中添加一下配置
<!-- 自动扫描包,也会自动注入解析器 --> <context:component-scan base-package="根包名"></context:component-scan>
打开spring的配置文件,找到我们要spring托管的bean
<span style="white-space:pre"> </span><bean id="myNewsAction" class="news.action.NewsAction" scope="prototype">
<span style="color:#33ff33;"><property name="ns" ref="myNewsService"></property></span>
</bean>
<bean id="myNewsService" class="news.service.NewsServiceImpl" scope="prototype">
<span style="color:#33ff33;"><property name="nd" ref="myNewsDao"></property></span>
</bean>
<bean id="myNewsDao" class="news.dao.NewsDaoImpl" scope="prototype">
<span style="color:#33ff33;"><property name="sf" ref="mySessionFactory" /></span>
</bean>
先把类中的属性注解加上,我们就可以将bean中注入的属性标记删除(代码中绿色部分),这里就示例给news.dao.NewsDaoImpl类中的sessionfactory添加注解
去到news.dao.NewsDaoImpl类中,添加如下注解
@Autowired
<span style="color:#ffff00;">@Qualifier("mySessionFactory")</span>
private SessionFactory sf;
只添加@Autowired注解也可以,spring会自动将该属性注入,注入的bean名为开头字母为小写的属性名(sessionFactory),这样的话就要将application.xml中的mySessionFactory bean名改为sessionFactory,添加@Qualifier的好处是可以指定注入的bean名,不过一般不用。基本上,我们类中的属性就是这样注入,注入完属性后,我们就可以添加上类的注解,这样我们就可以将application.xml中对应的bean给删除,即如下这些配置可删除
<bean id="myNewsAction" class="news.action.NewsAction" scope="prototype">
</bean>
<bean id="myNewsService" class="news.service.NewsServiceImpl" scope="prototype">
</bean>
<bean id="myNewsDao" class="news.dao.NewsDaoImpl" scope="prototype">
</bean>
这里还是拿news.dao.NewsDaoImpl类做示例,添加如下注解即可
@Repository
@Scope("prototype")
public class News_DaoImp implements News_Dao {
这里介绍下action、service、dao的注解语法分别是@Controller、@Service、@Repository。
@Scope("prototype")的意思是该实例为非单例,一个用户访问就创建一个实例
挨个注入完之后我们就差不多成功了,最后,我们还要更改struts.xml文件中的action标记中的calss
<action name="IndexAction.*" class="<span style="color:#3333ff;">indexAction</span>" method="{1}">
自动注入的话把类名改为小写即可,好了,我们已经将注解添加完毕,下面简单介绍一下jdk添加属性注解
jdk注解:
添加jdk属性注解我们在属性名上添加这样一条代码即可
@Resource(name="sessionFactory")
private SessionFactory sf;
name为注入的bean名
这样的话我们不能用jdk的注解配置类的注解,所以在spring中就要留下bean
<bean id="myNewsAction" class="news.action.NewsAction" scope="prototype">
</bean>
<bean id="myNewsService" class="news.service.NewsServiceImpl" scope="prototype">
</bean>
<bean id="myNewsDao" class="news.dao.NewsDaoImpl" scope="prototype">
</bean>
差不多就是这样了,学艺不精,个人拙见,不正之处,望各大牛指正,感激不尽!