Spring框架之容器(applicationContex.xml)
来源:互联网 发布:java解析日志文件 编辑:程序博客网 时间:2024/04/29 11:25
发现贴PPT的内容很麻烦,这里就不贴了,就贴一些课堂笔记和代码吧。O(∩_∩)O~~
简单介绍
- Spring有两项技术:容器和AOP
- Spring现在已经从2.5到3.0,现在已经到了4.0版本,但是最好还是从2.5开始学起。
- 在Spring配置文件applicationContext.xml(当然名字是可以随意取的,但是还是要尽量遵守规范)
- 通过xml造出BeanFactory拿出bean
- 更多请见代码中有详细注解
简单初识Spring的容器技术
canSpring25Demo
Person.java
package cn.hncu.spring25;public class Person {private String name;private Integer age;private Cat cat;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", cat=" + cat + "]";}}
Cat.java
package cn.hncu.spring25;public class Cat {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Cat [name=" + name + "]";}}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><!-- 默认是单例 --><bean id="p1" class="cn.hncu.spring25.Person"></bean><!-- 配置了scope="prototype"每次都是新new 一个对象,默认是 singleton--><bean id="pp" class="cn.hncu.spring25.Person" scope="prototype"></bean><bean id="p2" class="cn.hncu.spring25.Person"><property name="name" value="Jack"></property><property name="age"><value>33</value></property><property name="cat" ref="cat"></property></bean><bean id="cat" class="cn.hncu.spring25.Cat" ><property name="name" value="Tom"></property></bean></beans>
Demo.java
package cn.hncu.spring25;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;public class Demo {public static void main(String[] args) {Resource rs=new ClassPathResource("applicationContext.xml");BeanFactory factory=new XmlBeanFactory(rs);Person p1=(Person) factory.getBean("p1");//参数为xml配置bean的idPerson p2=(Person) factory.getBean("p1");System.out.println(p1);System.out.println(p2);System.out.println(p1==p2);System.out.println("-------------------------------");Person p3=(Person) factory.getBean("pp");//参数为xml配置bean的idPerson p4=(Person) factory.getBean("pp");System.out.println(p3);System.out.println(p4);System.out.println(p3==p4);}}
结果图:
canSpring30Demo
Person.java
package cn.hncu.domain;import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.Set;public class Person {private String name;private Integer age;private Cat cat;private List<String> list;private Map<String, Object> map;private Set<String> set;private Object[] obj;public Object[] getObj() {return obj;}public void setObj(Object[] obj) {this.obj = obj;}public Set<String> getSet() {return set;}public void setSet(Set<String> set) {this.set = set;}public Map<String, Object> getMap() {return map;}public void setMap(Map<String, Object> map) {this.map = map;}public List<String> getList() {return list;}public void setList(List<String> list) {this.list = list;}public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", cat=" + cat+ ", list=" + list + ", map=" + map + ", set=" + set + ", obj="+ Arrays.toString(obj) + "]";}}
Cat.java
package cn.hncu.domain;public class Cat {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void eatFish(){System.out.println("I like fish, it is delicious");}@Overridepublic String toString() {return "Cat [name=" + name + "]";}}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><bean class="cn.hncu.domain.Person"><property name="name" value="Space"></property><property name="age" value="20"></property><property name="cat" ref="tigerCat"></property> <property name="list"><list><value>XXX</value><value>YYY</value><value>ZZZ</value></list></property><property name="map"><map><entry key="name" value="Hi"></entry><entry key="age" value="15"></entry></map></property><property name="set"><set><value>111</value><value>222</value><value>333</value></set></property><property name="obj"><array><value>一个字符串</value><ref bean="tigerCat"/><bean class="cn.hncu.domain.Cat"><property name="name" value="Tom"></property></bean><list><value>aaa</value><value>111</value></list></array></property></bean><!-- 外部导入xml中的bean --><import resource="2.xml"/></beans>
2.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><bean id="tigerCat" class="cn.hncu.domain.Cat"><property name="name" value="Tiger"></property></bean></beans>
Demo.java
package cn.hncu.demo;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.hncu.domain.Person;public class Demo {public static void main(String[] args) {//换种方式加载配置文件ApplicationContext ctx=new ClassPathXmlApplicationContext("cn/hncu/demo/applicationContext.xml");Person p=ctx.getBean(Person.class);p.getCat().eatFish();System.out.println(p);}}
简单的学生登录:
StudDemo.java
package cn.hncu.stud;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import cn.hncu.stud.action.LoginAction;public class StudDemo {public static void main(String[] args) {ApplicationContext ctx=new ClassPathXmlApplicationContext("cn/hncu/stud/stud.xml");LoginAction action=ctx.getBean(LoginAction.class);action.login();}}
Stud.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><bean class="cn.hncu.stud.action.LoginAction"><property name="service" ref="service"></property></bean><bean id="service" class="cn.hncu.stud.service.IStudServiceImpl"><property name="orclDao" ref="orcl"></property></bean><!-- 如果想把改用jdbc方式访问,那么把该段的注释去掉 且 把上一段有关orcl的注入注释上<bean id="service" class="cn.hncu.stud.service.IStudServiceImpl"><property name="jdbcDao" ref="orcl"></property></bean> --><bean id="jdbcDao" class="cn.hncu.stud.dao.IStudJdbcDao"></bean><bean id="orclDao" class="cn.hncu.stud.dao.IStudOrclDao"></bean></beans>
LoginAction.java
package cn.hncu.stud.action;import cn.hncu.stud.service.IStudService;public class LoginAction {//依赖Spring注入service接口,可以不用再new 实现类,但是set和get方法必须要写private IStudService service=null;public void login(){service.login();}public IStudService getService() {return service;}public void setService(IStudService service) {this.service = service;}}
IStudService.java
package cn.hncu.stud.service;public interface IStudService {public void login();}
IStudServiceImpl.java
package cn.hncu.stud.service;import cn.hncu.stud.dao.IStudDAO;public class IStudServiceImpl implements IStudService{//依赖Spring注入service接口,可以不用再new 实现类,但是set和get方法必须要写private IStudDAO dao=null;@Overridepublic void login() {dao.login();}public IStudDAO getDao() {return dao;}public void setDao(IStudDAO dao) {this.dao = dao;}}
IStudDAO.java
package cn.hncu.stud.dao;public interface IStudDAO {public void login();}
IStudJdbcDAO.java
package cn.hncu.stud.dao;public class IStudJdbcDao implements IStudDAO{@Overridepublic void login() {System.out.println("student is login ----jdbc");}}
IStudOrclDao.java
package cn.hncu.stud.dao;public class IStudOrclDao implements IStudDAO{@Overridepublic void login() {System.out.println("student is login ----Orcl");}}
有了Spring技术以后,实现service和dao的注入,就不再需要依赖实现类了(但要写接口的set和get方法),而且通过xml就可以配置,代码不需要改变,符合开闭原则。
0 0
- Spring框架之容器(applicationContex.xml)
- 【09】框架学习—Spring的IoC容器之XML方式
- applicationContex.xml 和 *-servlet.xml 的区别
- Spring 框架概述(三)之IoC 容器
- Spring框架之SpringIoc容器(一)
- Spring框架之IoC容器—概览
- Spring boot(13) 随时获取ApplicationContex
- Spring框架中的容器
- Spring框架IOC容器
- Spring框架:Spring容器详解
- Spring框架:Spring容器详解
- Spring框架之IoC容器—BeanFactory接口
- Spring框架之IoC容器—ListableBeanFactory接口
- Spring框架之IoC容器—HierarchicalBeanFactory接口
- Spring框架之IoC容器—ConfigurableBeanFactory接口
- Spring框架之IoC容器—AutowireCapableBeanFactory接口
- Spring框架之IoC容器—ConfigurableListableBeanFactory接口
- Spring学习:IOC容器(xml)
- 关于安卓一键分享的,急求帮助!
- 利用Bundle完成Activity向Fragment传值
- Mac上下载编译Android 6.0源码详细记录
- 对象序列化成json数据时,Infinite recursion (StackOverflowError)
- Java虚拟机学习笔记(一)——JVM运行时数据区和常见内存错误
- Spring框架之容器(applicationContex.xml)
- *首篇*Activity的启动过程
- FFMPEG 在Android 4.0运行的问题,求大神们解决!
- android 的MVP模式的介绍
- QT QTableWidget导出为Excel格式
- 在线等待,求高手,socket发送延迟问题
- 解决Windows10 14393版本迅雷崩溃问题
- 对与错,刚一半——我的2016
- android热点