SpringMVC的注解和依赖注入(IOC)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lyt_7cs1dn9/article/details/50965815

1、spring注解

1.1@Controller

@Controller用来注解Action,在springMvc开发中也就是直接注解Controller

package com.action
@Controller
@Scope("prototype")
 public class UserAction extends BaseAction<User>{

 }


上述代码就是告诉spring容器,我是一个action类,spring容器会自动帮忙创建一个userAction的的对象,声明一个@Scope("prototype"),是为了使你提交的每一个请求有一个单独的action来处理,这样可以保证action的线程安全(对线程安全与否不了解的可以去查一下相关知识)

1.2@ Service

 @Service("userService")
 public class UserServiceImpl implements UserService{

 }
上述代码告诉spring容器,创建UserService的bean,对应的id是userService,这样当在UserAction中使用UserService,就可以直接把userService注入到action层,进行调用,在调用的时候声明一个service对象,并且在其上面用@Resource进行注解,例:
	@Resource(name = "userService")
	private UserService userService;

1.3@ Repository

@Repository(value="userDao")
public class UserDaoImpl extends BaseDaoImpl<User> {

}



Repository的作用是将数据访问层 (DAO ) 的类标识为 Spring Bean,只需将该注解标注在 DAO类上即可。上述代码是让Spring容器创建了一个id为userDao的bean,当在service层使用的时候也可以像1.2那样用@resource注解一下,就可以调用dao层的增删改查方法操作数据库了。这里使用了BaseDao<T>和BaseAction<T>,T是泛型,如果传的是别的实体类,可以也直接写成BaseDaoImpl<Customer>


当然需要在spring配置文件里面配置一下自动扫描范围  <context:component-scan base-package="*"/>  *代表你想要扫描的那些包的目录所在位置。Spring 在容器初始化时将自动扫描 base-package 指定的包及其子包下的所有的.class文件,所有标注了 @Repository 的类都将被注册为 Spring Bean
这种注解的方式可以方便程序员来写代码,不用在xml配置文件配置那么多了。
 例如: <bean id="orderService" class="com.service.OrderService">
          <property name="userDAO" ref="u" />	  
 	  <property name="goodsDAO" ref="u" />
</bean> 上述是在xml配置文件里,将userDao和goodsDao注入到了orderService中,这样orderService就可以调用userDao和goodsDao里面的方法来操作数据库了。

总之不管是在自动扫描的方式还是在xml配置文件里面进行注入,都是为了不让程序员不停的new对象,使用起来更灵活。


展开阅读全文

没有更多推荐了,返回首页