当前位置: 首页 > news >正文

永久免费的网站空间百度快照怎么看

永久免费的网站空间,百度快照怎么看,装修设计公司排行,快站是个什么平台获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊。 对象装配(对象注⼊)即DI 实现依赖注入的方式有 3 种: 1. 属性注⼊ 2. 构造⽅法注⼊ 3. Setter 注⼊ 属性注入 属性注⼊是使⽤ Auto…
        获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊。 对象装配(对象注⼊)即DI 实现依赖注入的方式有  3 种:
        1. 属性注⼊
        2. 构造⽅法注⼊
        3. Setter 注⼊

属性注入

        属性注⼊是使⽤ @Autowired 实现的,将 Service 类注⼊到 Controller 类中。
Service 类:
package com.java.demo.service;import org.springframework.stereotype.Service;@Service
public class StudentService {public int age = 20;public void say() {System.out.println("hello, StudentService: " + age);}
}

Controller 类:

package com.java.demo.controller;import com.java.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentController {@Autowired // 属性注入对象(从 spring 容器中更加简单的读取到对象)private StudentService service;public void say() {System.out.println("hi,Controller");service.say();}
}

运行结果:

小结:

        优点:方便简单

        缺点:1. 没办法实现被 final 修饰的变量注入;2. 通用性不好,只适用于 IoC 容器中;3. 因为太简单了所以有些人会违背 spring 的 “单一设计” 原则。

Setter 注入

Controller 类:

package com.java.demo.controller;import com.java.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentController {//    @Autowired // 属性注入对象(从 spring 容器中更加简单的读取到对象)
//    private StudentService service;// 使用 Setter 注入private StudentService service;@Autowiredpublic void setService(StudentService service) {this.service = service;}public void say() {System.out.println("hi,Controller");service.say();}
}

运行结果:

小结:

        优点:符合单一设计原则(一个方法只能传递一个对象)

        缺点:1. 依旧存在没办法实现被 final 修饰的变量注入;2. 使用 Setter 注入的对象可能会被修改。(代码本来是 20 的,通过 set 的传参可能被改成了 别的数)

构造方法注入

Controller 类:

如果当前的类中只有一个构造方法,那么 @Autowired 可以省略

package com.java.demo.controller;import com.java.demo.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller  // 这个注解表示:当前这个类会自动地存储到 spring 中
public class StudentController {//    @Autowired // 属性注入对象(从 spring 容器中更加简单的读取到对象)
//    private StudentService service;//    // 使用 Setter 注入
//    private StudentService service;
//
//    @Autowired
//    public void setService(StudentService service) {
//        this.service = service;
//    }// 使用 构造方法注入private StudentService service;// @Autowiredpublic StudentController(StudentService service) {this.service = service;}public void say() {System.out.println("hi,Controller");service.say();}
}

运行结果:

小结:

        优点:1. 实现了被 final 修饰的变量也可以注入了;2. 注入的对象不会被改变(构造方法只执行一次);3. 可以保证注入对象完全初始化;4. 通用性更好(即放在不是 IoC 框架中也能用)。

        为什么这里可以注入一个不可变对象?因为在 Java 中,被 final 修饰的对象必须要满足这两个条件中的一个:final 修饰的对象要么直接赋值,要么在构造方法中赋值。

        这个 spring 官方推荐的写法,所以就没有缺点(狗头.jpg)。但是官方好像也是用的第一种注入,因为太简单方便了。

@Resource

        这是除了 @Autowired 之外,另外一种也可以做到类注入的方式。

@Autowired 和 @Resource 的区别  

        1. @Autowired 来⾃于 Spring,@Resource 来⾃于 JDK 的注解

        2. @Resource 只能⽤于 Setter 注⼊和属性注⼊,不能⽤于构造函数注⼊。

        3. @Resource ⽀持更多的参数设置,例如可以设置 name,然后根据 name 获取 Bean。

        4. @Autowired 是先根据类型查找,类型相同后再根据名称查找;@Resource 则恰好反过来。(在 spring 容器中找 Bean 的方式是 根据类型查找、根据名称查找)

比如:同一个类型存了多个 Bean

一个 User 类存了两个:

package com.java.demo.component;import com.java.demo.entity.User;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;@Controller
public class UserBeans {@Beanpublic User getUser() {User user = new User();user.setUid(1);user.setName("张三");user.setPassword("123456");return user;}@Beanpublic User getUser2() {User user = new User();user.setUid(2);user.setName("李四");user.setPassword("123456");return user;}}

运行时发现:

报错的原因是: 同一个类型存了多个 Bean 对象,导致不知道要找哪个。

解决:使用 @Resource 设置 name 属性:

http://www.yayakq.cn/news/210987/

相关文章:

  • 中国信誉建设网站微网站套餐
  • 做淘宝客如何引出图片到网站网页版qq游戏大厅
  • 建设门户网站的请示网站建设网站徒手整形培训
  • 专业装修设计网站国外物流公司网站模板
  • 做网站的那些事专业外贸网站建设公司排名
  • 做淘宝网站买个模版可以吗嘉兴建站网站模板
  • 公司网站横幅如何做网络推广的基本渠道
  • 盐山县做网站珠宝首饰商城网站建设
  • 上海市住房和城乡建设管理局网站wordpress发表图片
  • 个人网站的内容南通外贸网站制作
  • 响应式网站建设定制建设网络平台费用
  • 深圳大浪有做网站的吗顺德手机网站设计信息
  • 网站建设费用模板体育网站建设的必要性
  • 网站建设亿码酷出名5手机微信怎么创建公众号
  • 网站禁止访问怎么解除电影采集网站怎么做
  • 网站建设维护协议吉林网站备案
  • 遵义网站制作报价seo快速优化文章排名
  • 上海网站注销php网站开发工程师任职要求
  • 自建网站管理网站建设 需要注意什么
  • 怀柔 做网站的东莞如何制作网页
  • 免费发布推广信息网站0元免费做代理
  • 站长基地gif网站素材网页设计基础教程第七章课后习题
  • 合肥市城乡城乡建设局网站静态网站跟动态的区别
  • 优秀品牌企业网站建设案例百汇游戏网站开发商
  • 企业网站模板购买网站如何报备
  • 服务器win7网站建设网页设计与制作html
  • 网站建设和维护方案郑州企业招聘
  • 东莞市建设工程质监督站网站外国可以做站外推广的网站
  • 广州哪里做网站站酷设计网站官网入口插画设计
  • 百度怎样建设网站京东导购网站开发