Spring注入方式主要有三种方式:构造方法注入,setter注入,基于注解的注入,下面我分别详解@mikechen
属性注入
属性注入是大家最为常见也是使用最多的一种注入方式了,代码如下:
@Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; //... }
这里是使用 @Autowired 注解注入,另外也有 @Resource 以及 @Inject 等注解,都可以实现注入。
Set注入
Set注入:这种注入方式通过set方法完成注入,所以在类中必须要给属性设定set方法。
如下所示:
@Service public class UserServiceImpl implements UserService { private UserMapper userMapper; @Autowired public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } }
如果没有对应的方法,就会报错,Set注入都是通过Java反射机制实现的。
构造器注入
构造注入:这种注入方式是通过构造方法来实现,类中必须提供构造方法,属性的set方法不需要。
如下所示:
@Service public class UserServiceImpl implements UserService { private final UserMapper userMapper; @Autowired public UserServiceImpl(UserMapper userMapper) { this.userMapper = userMapper; } }
构造器注入是官方推荐的方式,构造方法注入也是通过Java反射机制实现的。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》