一分钟学会spring注解之@Autowired注解(二)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 一分钟学会spring注解之@Autowired注解(二)

一分钟学会spring注解之@Autowired注解(二)

 2018/5/20 12:11:44  知了ing  程序员俱乐部  我要评论(0)
  • 摘要:上一遍文章中有简单的介绍@Autowired注解的使用,没有查看的同学可以点击查看,但是那偏文章只介绍了@Autowired注解的一种使用方式,当然也是常用的方式就是@Autowired注解加在成员变量上,今天将介绍另外的几种使用方式:@Autowired注解加在方法上@Autowired注解加在构造方法上@Autowired注解加在参数上1,@Autowired注解加在方法上修改之前的UserService如下在setUserDao方法上加上@Autowired注解
  • 标签:Spring 注解

上一遍文章中有简单的介绍@Autowired注解的使用,没有查看的同学可以点击查看,但是那偏文章只介绍了@Autowired注解的一种使用方式,当然也是常用的方式就是@Autowired注解加在成员变量上,今天将介绍另外的几种使用方式:

    class="list-paddingleft-2">
  • @Autowired注解加在方法上

  • @Autowired注解加在构造方法上

  • @Autowired注解加在参数上

?

1,@Autowired注解加在方法上

?

修改之前的UserService如下在setUserDao方法上加上@Autowired注解:

?

@Service
public class UserService {
// ? ?@Autowired(required=false)
? ?private UserDao userDao;
? ?public UserDao getUserDao() {
? ? ? ?return userDao;
? ?}
? ?@Autowired
? ?public void setUserDao(UserDao userDao) {
? ? ? ?this.userDao = userDao;
? ?}
? ?/**
? ? * 增加一个tostring方法 方便测试
? ? */

? ?@Override
? ?public String toString() {
? ? ? ?return "UserService [userDao=" + userDao + "]";
? ?}
}

?

测试代码如下:

?

AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainScanConfig.class);
UserService object = (UserService) applicationContext2.getBean("userService");
System.out.println("实例bean为 === "+object);

?

运行我们可以发现userDao同样成功的注入到了UserService中了

?

2,@Autowired注解加在构造方法上

?

我们继续修改UserService把@Autowired注解加在UserService对应的构造方法上如下:

?

@Service
public class UserService {
// ? ?@Autowired(required=false)
? ?private UserDao userDao;
? ?/**
? ? * spring 在启动的时候会调用这个有参构造方法
? ? * @param userDao
? ? */

? ?@Autowired
? ?public UserService(UserDao userDao){
? ? ? ?this.userDao=userDao;
? ?}
? ?/**
? ? * 增加一个tostring方法 方便测试
? ? */

? ?@Override
? ?public String toString() {
? ? ? ?return "UserService [userDao=" + userDao + "]";
? ?}
}

?

运行测试我们可以发现userDao同样成功的注入到了UserService中

?

3,@Autowired注解加在参数上

?

继续修改以上代码如下:

?

@Service
public class UserService {
// ? ?@Autowired(required=false)
? ?private UserDao userDao;
? ?/**
? ? * spring 在启动的时候会调用这个有参构造方法
? ? * 如果只有一个有参构造方法则@Autowired注解也可以省略
? ? * @param userDao
? ? */

? ?public UserService(@Autowired UserDao userDao){
? ? ? ?this.userDao=userDao;
? ?}
? ?/**
? ? * 增加一个tostring方法 方便测试
? ? */

? ?@Override
? ?public String toString() {
? ? ? ?return "UserService [userDao=" + userDao + "]";
? ?}
}

?

注解与第二种的区别@Autowired加到了对应的参数中,如果就一个有参构造方法,@Autowired注解也可以省略,测试结果可以发现同样成功注入

?

虽然后边这几种方法我们不常用,但是作为知识的补充还是有必要的,万一哪位同学写了这样的代码,我们也不至于看不懂

?

以上是今天文章的所有内容,欢迎大家吐槽

?

?

推荐阅读

?

深入理解spring生命周期与BeanPostProcessor的实现原理

?

?

更多优质文章请关注以下公众号查阅:

?

发表评论
用户名: 匿名