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

蓝色织梦cms企业网站模板全站源码青岛seo公司

蓝色织梦cms企业网站模板全站源码,青岛seo公司,网站建设预算明细,公司取名网对我来说比较新的一个概念,以前还真没有接触过。所以简单总结总结。 不适用依赖注入的情况 // 接口 public interface GreetingService {void greet(); }// 实现类 public class EnglishGreeting implements GreetingService {public void greet() {System.out.pri…

对我来说比较新的一个概念,以前还真没有接触过。所以简单总结总结。

不适用依赖注入的情况

// 接口
public interface GreetingService {void greet();
}// 实现类
public class EnglishGreeting implements GreetingService {public void greet() {System.out.println("Hello!");}
}// 使用者类
public class Client {private GreetingService service;public Client() {// 写死了具体实现this.service = new EnglishGreeting();  // 强耦合}public void sayHello() {service.greet();}
}// main 方法
public class Main {public static void main(String[] args) {Client client = new Client();client.sayHello();  // 输出:Hello!}
}

使用依赖注入的情况。

// 接口
public interface GreetingService {void greet();
}// 实现类
public class EnglishGreeting implements GreetingService {public void greet() {System.out.println("Hello!");}
}// 使用者类,不管 new,交给容器
public class Client {@Resourceprivate GreetingService service;public void sayHello() {service.greet();}
}// 模拟注入容器
public class BeanFactory {private Map<String, Object> beans = new HashMap<>();public void register(String name, Object bean) {beans.put(name, bean);}public void inject(Object target) throws Exception {Class<?> clazz = target.getClass();for (Field f : clazz.getDeclaredFields()) {if (f.isAnnotationPresent(Resource.class)) {Object bean = beans.get(f.getName());f.setAccessible(true);f.set(target, bean);}}}
}// main 方法
public class Main {public static void main(String[] args) throws Exception {BeanFactory factory = new BeanFactory();factory.register("service", new EnglishGreeting());Client client = new Client();factory.inject(client);  // 自动注入client.sayHello();  // 输出:Hello!}
}

@Resource修饰成员变量,只要成员变量名是register的名字,就自动初始化成注册的bean。@Resource修饰方法,是根据方法的参数名来匹配。比如:

        @Resource

        public void setZhService(GreetingService zhService) {

            this.zhService = zhService;

        }

这里就会用zhService去查找之前的register。

最后的f.set(target, bean);// 其实就相当于 client.service= EnglishGreeting;

其实从比对可以看出,就是把bean保存在Map<String, Object> beans里面。通过String去查找具体要用什么类。

好吧,感觉就是继续解耦了一些,把很多实现类由一个map统一管理而不是自己管理了。

具体有什么好处以后再看吧。。。

http://www.dtcms.com/wzjs/284608.html

相关文章:

  • 重庆网站建设哪个公司好免费推广有哪些
  • iphone做网站服务器网址链接查询
  • 公司网站制作哪个公司好淘宝代运营公司
  • 如今做哪些网站能致富seo与sem的区别和联系
  • 视频网站设计招商外包
  • 做网站学好哪些软件有哪些实用的网络推广方法
  • 官方网站侵权网站报价
  • 滨州网站建设电话百家号关键词排名
  • java做网站要哪些软件上海百度竞价托管
  • 在哪人网站要以接it项目做国家职业技能培训平台
  • 做斗图的网站技能培训
  • 建立充电站需要多少钱互联网广告推广好做吗
  • 意大利设计网站长沙做引流推广的公司
  • wordpress评论富文本核心关键词如何优化
  • 关于h5的网站模板如何在网上做销售推广
  • 内部购物券网站怎么做网站推广模式
  • 金融直播室网站建设百度怎么优化排名
  • 企业网站的开发建设方案怎么写sem竞价代运营公司
  • 电商网站首页开发社区营销推广活动方案
  • 佛山网站建设的首选学网络营销有用吗
  • 社交投票论坛网站开发专门制作小程序的公司
  • 网站什么时候做等保b2b和b2c是什么意思
  • 网站为什么做子域名廊坊seo建站
  • 做五金奖牌进什么网站百度手机助手官方正版
  • 做网站办什么营业执照信息流优化师是干什么的
  • 水利建筑工程网站软文代写兼职
  • 温州建站费用网站排名提高
  • .net手机网站源码一站式海外推广平台
  • 毕业设计指导网站开发深圳推广公司排行榜
  • 镭拓网站建设网络推广怎么赚钱