写点什么

Spring 中注解,java 电话面试技巧

用户头像
极客good
关注
发布于: 刚刚

3、@ Service


@Service 对应的是业务层 Bean,例如:


1 @Service("userService")


2 public class UserServiceImpl implements UserService {


3 ………


4 }


@Service(“userService”)注解是告诉 Spring,当 Spring 要创建 UserServiceImpl 的的实例时,bean 的名字必须叫做”userService”,这样当 Action 需要使用 UserServiceImpl 的的实例时,就可以由 Spring 创建好的”userService”,然后注入给 Action:在 Action 只需要声明一个名字叫“userService”的变量来接收由 Spring 注入的”userService”即可,具体代码如下:


1 // 注入 userService


2 @Resource(name = "userService")


3 private UserService userService;


@Resource 注解去标注,并且指明了其 name = “userService”,这就等于告诉 Spring,说我 Action 要实例化一个“userService”,你 Spring 快点帮我实例化好,然后给我,当 Spring 看到 userService 变量上的 @Resource 的注解时,根据其指明的 name 属性可以知道,Action 中需要用到一个 UserServiceImpl 的实例,此时 Spring 就会把自己创建好的名字叫做”userService”的 UserServiceImpl 的实例注入给 Action 中的“userService”变量,帮助 Action 完成 userService 的实例化,这样在 Action 中就不用通过“UserService userService = new UserServiceImpl();”这种最原始的方式去实例化 userService 了。


如果没有 Spring,那么当 Action 需要使用 UserServiceImpl 时,必须通过“UserService userService = new UserServiceImpl();”主动去创建实例对象,但使用了 Spring 之后,Action 要使用 UserServiceImpl 时,就不用主动去创建 UserServiceImpl 的实例了,创建 UserServiceImpl 实例已经交给 Spring 来做了,Spring 把创建好的 UserServiceImpl 实例给 Action,Action 拿到就可以直接用了。


4、@ Repository


@Repository 对应数据访问层 Bean ,例如:


1 @Repository(value="userDao")


2 public class UserDaoImpl extends BaseDaoImpl<User> {


3 ………


4 }


@Repository(value=”userDao”)注解是告诉 Spring,让 Spring 创建一个名字叫“userDao”的 UserDaoImpl 实例。


当 Service 需要使用 Spring 创建的名字叫“userDao”的 UserDaoImpl 实例时,就可以使用 @Resource(name = “userDao”)注解告诉 Spring,Spring 把创建好的 userDao 注入给 Service 即可。


1 // 注入 userDao,从数据库中根据用户 Id 取出指定用户时需要用到


2 @Resource(name = "userDao")


3 private


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


BaseDao<User> userDao;


5.@ResponseBody


作用: 该注解用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter 转换为指定格式后,写入到 Response 对象的 body 数据区。


使用时机:返回的数据不是 html 标签的页面,而是其他某种格式的数据时(如 json、xml 等)使用;


6.@Resource 和 @Autowired


@Resource 和 @Autowired 都是做 bean 的注入时使用,其实 @Resource 并不是 Spring 的注解,它的包是 javax.annotation.Resource,需要导入,但是 Spring 支持该注解的注入。


共同点


两者都可以写在字段和 setter 方法上。两者如果都写在字段上,那么就不需要再写 setter 方法。


不同点


(1)@Autowired


@Autowired 为 Spring 提供的注解,需要导入包 org.springframework.beans.factory.annotation.Autowired;只按照 byType 注入。@Autowired,spring 会根据类型去寻找定义的 Bean 然后将其注入


public class TestServiceImpl {


// 下面两种 @Autowired 只要使用一种即可


@Autowired


private UserDao userDao; // 用于字段上


@Autowired


public void setUserDao(UserDao userDao) { // 用于属性的方法上


this.userDao = userDao;


}


}


如果我们想使用按照名称(byName)来装配,可以结合 @Qualifier 注解一起使用


public class TestServiceImpl {


@Autowired

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Spring中注解,java电话面试技巧