Spring1.1简介及入门——Spring容器相关
来源:互联网 发布:犀牛5.0mac中文版 编辑:程序博客网 时间:2024/06/01 10:48
简介
Spring框架的本质:通过XML配置去驱动Spring框架以反射执行Java代码。
Spring的IoC
依赖注入可分为3种:
- 设值注入。 通过控制Spring调用setter方法来注入。
- 构造器注入。 通过控制Spring调用有参数的构造器来注入。
- 接口注入。少用
需明确概念:spring核心——依赖注入(DI、Dependency Injection)/ 控制反转(IoC、Inverse of Control)
关于Spring原理及机制,可参考:http://jiwenke.iteye.com/blog/493965以及https://www.cnblogs.com/ITtangtang/p/3978349.html#a1
入门
1、环境配置:
(1)导入JAR包:
(2)增加一个Spring配置文件放在类路径下(或者文件系统路径。命名随意)
2、实例一
(1)POJO类
Dog.java
public class Dog {String kind;public String getKind() {return kind;}public void setKind(String kind) {this.kind = kind;}@Overridepublic String toString() {return "Dog [kind=" + kind + "]";}}
User.javapublic class User {private String name;private int age;private Dog dog;public User(){}public User(String name,int age,Dog dog){super();this.name = name;this.age = age;this.dog = dog;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}@Overridepublic String toString() {return "User [name=" + name + ", age=" + age + ",I have a " + dog + "]";}}
(2)测试类
①使用无参构造器:
a.beans.xml配置
b.测试
c.此处发现:
调用构造器和执行setter方法在getBean方法调用之前。因为ApplicationContext默认支持预加载,也就是Spring在创建容器之时,就会自动创建容器中所有的singleton Bean,并立即根据property元素调用setter方法。可以通过在bean元素上指定:lazy-init属性或在beans上指定default-lazy-init属性为true来关闭预初始化。
而BeanFactory并不支持预加载
eg:
测试结果:
②使用有参构造器
3、实例二——国际化支持
(1) 编写两个国际化资源文件(中国、美国)
(2)加载国际化资源文件
容器中一个名为messageSource,类型为ResourceBundleMessageSource的Bean用于管理国际化资源文件。(不能改)
ApplicationContext实现了MessageSource接口
在beans.xml中增加如下配置:
(3)测试
根据国际化消息的key来获取国际化消息
测试结果:
4、实例三——资源访问
(1)使用Resource访问底层资源
InfoBean.java
public class InfoBean {private Resource resource;private String charset;public Resource getResource() {return resource;}public void setResource(Resource resource) {this.resource = resource;}public String getCharset() {return charset;}public void setCharset(String charset) {this.charset = charset;}public void readInfo() throws UnsupportedEncodingException, IOException{BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream(),charset));String line ;while((line = br.readLine())!=null){System.out.println(line);}}}(2)beans.xml配置
(3)测试
public void test() throws UnsupportedEncodingException, IOException{ApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml");InfoBean infoBean = (InfoBean)appContext.getBean("info1");infoBean.readInfo();}
5、事件机制
可参考:http://blog.csdn.net/blueboz/article/details/49949573
- Spring1.1简介及入门——Spring容器相关
- Spring1.2——bean相关
- Spring入门——Spring IOC容器
- 2、spring入门—Spring IOC容器
- Spring 框架简介(Spring AOP 和 IOC 容器入门)
- Spring学习(二)Spring容器简介及创建
- Spring学习笔记1--简介及入门例子
- Spring总结及不同版本间的区别以及 Struts1.2+Spring1.2+Hibernate3.1的整合
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring入门示例及相关概念介绍
- Spring学习1——Spring容器
- 解决Jenkins登录302重定向导致无法登录
- 华为云软件开发云助力集时通软件敏捷开发
- Eureka 源码解析 —— 调试环境搭建
- SpringBoot项目在IntelliJ IDEA中实现热部署
- 每天一道LeetCode-----在字符方格中查找某个单词
- Spring1.1简介及入门——Spring容器相关
- Mongodb字段更新$unset操作符
- leetcode 392. Is Subsequence
- IIS7 伪静态 web.config 配置方法
- Android开发:cmd配合Android Device Monitor打开sqlite数据库
- DOM学习笔记(1)
- 15 讲字符串格式化
- TortoiseSVN在CheckOut时出现unknown host 'xxx'的错误
- [BZOJ1941][Sdoi2010]Hide and Seek(KD-tree)