初识Sprig
来源:互联网 发布:王思远她抄袭知乎 编辑:程序博客网 时间:2024/06/05 09:47
Spring是一个轻量级额的控制反转和面向切面的容器框架。
Spring的特点:1、轻量(非入侵式)2、控制反转(Inversion of Control)3、面向切面(AOP)4、容器5、框架
核心机制:依赖注入
通常由调用者来创建被调用者的实例(比如说武士使用剑,武士就依赖于剑),在Spring里,创建被调用者由Spring容器来完成(因此称为控制反转),然后注入调用者(因此称为依赖注入)。
注入的方式有两种:设值注入(采用setter方法) 和 构造注入
设值注入有 1、8中基本属性 和 String 2、数组 3、集合
下面是一个例子
package com.test;import java.util.List;import java.util.Map;import java.util.Set;public class User {//基本数据类型private String name;//引用类型private Bow bow;//集合private Address [] addr;private List list;private Set set;private Map map;public String getName() {return name;}public void setName(String name) {this.name = name;}public Bow getBow() {return bow;}public void setBow(Bow bow) {this.bow = bow;}public Address[] getAddr() {return addr;}public void setAddr(Address[] addr) {this.addr = addr;}public List getList() {return list;}public void setList(List list) {this.list = list;}public Set getSet() {return set;}public void setSet(Set set) {this.set = set;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}}
必须提供setter 和getter 方法
package com.test;public class Bow {//user 可以使用武器private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
package com.test;public class Address {//user的地址private String street;public String getStreet() {return street;}public void setStreet(String street) {this.street = street;}}
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="user" class="com.test.User"><!-- 基本类型 --><property name="name" value="cl"/><!-- 引用 --><property name="bow" ref="bow" /><!-- 集合 数组 --><property name="addr"><list><ref bean="addr1"/><ref bean="addr2"/><ref bean="addr3"/></list></property><!-- 集合 list --><property name="list"><list><ref bean="addr1"/><ref bean="addr2"/><ref bean="addr3"/><value type="java.lang.Integer">11</value><value type="java.lang.Integer">11</value></list></property><!-- 集合 set --><property name="set"><set><ref bean="addr1"/><ref bean="addr2"/><ref bean="addr3"/><value type="java.lang.Integer">11</value><value type="java.lang.Integer">12</value></set></property><!-- 集合 map --><property name="map"><map><entry key="1" value="1" /><entry key="2" value="2" /><entry key="3" value="3" /><entry key="4" value-ref="addr1"/></map></property></bean><!-- 引用 --><bean id="bow" class="com.test.Bow"><property name="name" value="弓箭" /></bean><!-- 数组 --><bean id="addr1" class="com.test.Address"><property name="street" value="中山路" /></bean><bean id="addr2" class="com.test.Address"><property name="street" value="南昌路" /></bean><bean id="addr3" class="com.test.Address"><property name="street" value="瑞京路" /></bean></beans>
package com.test;import java.util.List;import java.util.Map;import java.util.Set;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;/** * 测试类 * */public class Test {public static void main(String[] args) {//使用Spring的IocApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//ApplicationContext context = new FileSystemXmlApplicationContext("src/applicationContext.xml");User hello = (User)context.getBean("user");//hello.setStr("this is Helloword!!--");System.out.println(hello.getBow().getName());//取数组System.out.println("******取数组******");Address addr[] = hello.getAddr();for(int i=0;i<addr.length;i++)System.out.println(addr[i].getStreet());//取listSystem.out.println("******取list******");List list = hello.getList();for(Object out:list){if(out.getClass()==Integer.class)System.out.println(out);elseSystem.out.println(((Address)out).getStreet());}//取setSystem.out.println("******取set******");Set set = hello.getSet();for(Object out:set){if(out.getClass()==Integer.class)System.out.println(out);elseSystem.out.println(((Address)out).getStreet());}//取mapSystem.out.println("******取map******");Map<String,Object> map = hello.getMap();for(String out:map.keySet()){if(map.get(out).getClass()==String.class)System.out.println(out + "=" + map.get(out));elseSystem.out.println(((Address)map.get(out)).getStreet());}}}
- 初识Sprig
- Sprig 常用注解
- sprig mvc返回json数据demo
- sprig mvc 重定向帶id
- sprig中基于注解的异常处理
- sprig mvc+freemarker模板页面静态化
- sprig学习笔记十九 事务的传播行为
- 初识
- 初识
- 初识
- 对sprig框架中控制反转(依赖注入)的理解
- SSH整合—从ServletContext资源中找不到sprig的配置文件
- js初识,博客初识
- TableLayout初识初识
- 初识Blog
- 初识CAA
- 初识JVM
- 初识SmartClient
- 用LoadRunner下载文件并保存到本地
- 在windows上手动创建oracle 10g
- 单片机I/O口推挽输出与开漏输出的区别
- Android编译后的文件结构
- 【100题】第五十一题 和为n连续正数序列
- 初识Sprig
- Python基础教程——12图形用户界面
- Config ftpserver
- 对话框项目集成完成,定时器 OnTimer使用顺利
- wincap 捕获本地 DNS 查询包并输出其IP,PORT,DOMAIN(完整版,附程序)
- linux /proc/cpuinfo文件分析
- Linux 下 adb usb 连接 usb 设备问题总结
- SmartClient组件使用
- 程序员人生 —— 总结过去10年,展望未来