房地产最新消息利好,海安网站优化,今网科技网站建设,上城区商城网站建设获取Bean对象也叫做对象装配#xff0c;是把对象取出来放到某个类中#xff0c;有时候也叫对象注入#xff01;
对象装配#xff08;对象注入#xff09;更加简单的读取Bean#xff08;是从Spring容器中读取某个对象放到当前类里面#xff09;的实现方法有以下3种…获取Bean对象也叫做对象装配是把对象取出来放到某个类中有时候也叫对象注入
对象装配对象注入更加简单的读取Bean是从Spring容器中读取某个对象放到当前类里面的实现方法有以下3种
属性注入最简单日常工作见的最多的构造方法注入Setter注入
使用这三种方法就可以更加简单的读取Bean从容器中读取某个对象放到当前类里面
属性注入 RestController
class UserController {//属性注入Autowired //自动注入对象更加简单的从Spring容器中获取到对象private UserService userService;RequestWrapper(/add)public UserInfo add(String username,String password){return userService.add(username,password);}
}优点分析 属性注入最大的优点就是实现简单、使用简单只需要给变量上添加一个注解Autowired就可以在不 new 对象的情况下直接获得注入的对象了这就是 DI 的功能和魅力所在所以它的优点就是使用简单。 缺点分析 有的编辑器idea都会提醒你”不建议使用此方法注入“ 属性注入的缺点主要包含以下3个 1.功能性问题无法注入一个不可变的对象final修饰的对象 2.通用性问题只能适用于Ioc容器 3.设计原则问题更容易违背单一设计原则 Setter注入 RestController
class UserController {//Setter注入private UserService userService;Autowired //Setter方法 Autowired注解public void setUserService(UserService userService){this.userServiceuserService;}RequestWrapper(/add)public UserInfo add(String username,String password){return userService.add(username,password);}
} 优点分析 完全符合单一职责的设计原则因为每一个 Setter 只针对一个对象 缺点分析 1.不能注入不可变对象fianl修饰的对象 2.注入的对象可被修改
Resource另一种注入关键字
在进行类注入的时候可以使用Autowried关键字之外我们还可以使用Resource进行注入
Controller
class UserController {//注入Resourceprivate UserService userService;public User getUser(Integer id) {return userService.getUser(id);}
}
那么我们来看一下Autowired和Resource的区别吧
出身不同 Autowired来自于Spring Resource来自于JDK的注解 使用时设置的参数不同 相比于Autowired来说Resource支持更多的参数设置 列如name根据名称获取Bean Autowired可以用于Setter注入构造函数注入和属性注入而Resource只能用于Setter注入和属性注入不能适用于构造函数注入Autowired先根据类型查找byType之后再根据名称查找byNameResource先根据名称查找然后再根据类型查找
在Spring容器中找Bean有两种方式
根据类型查找根据名称查找
综合练习
在 Spring 项⽬中通过 main ⽅法获取到 Controller 类调⽤ Controller ⾥⾯通过注⼊的⽅式调⽤ Service 类Service 再通过注⼊的⽅式获取到 Repository 类Repository 类⾥⾯有⼀个⽅法构建⼀ 个 User 对象返回给 main ⽅法。Repository ⽆需连接数据库使⽤伪代码即可。 总结 将对象存储到 Spring 中 a. 使⽤类注解Controller、Service、Repository、Configuration、Component【它 们之间的关系】 b. 使⽤⽅法注解Bean【注意事项必须配合类注解⼀起使⽤】 Bean 的命名规则 ⾸字⺟和第⼆个字⺟都⾮⼤写⾸字⺟⼩写来获取 Bean如果⾸字⺟和第⼆个 字⺟都是⼤写那么直接使⽤原 Bean 名来获取 Bean 从 Spring 中获取对象 a. 属性注⼊ b. Setter 注⼊ c. 构造函数注⼊推荐 注⼊的关键字有 a. Autowired b. Resource Autowired 和 Resource 区别 出身不同 使⽤时设置参数不同 Resource ⽀持更多的参 数⽐如 name。 解决同⼀类型多个 Bean 的报错 a. 使⽤ Resource(name) b. 使⽤ Qualifier()