容器类第一个spring项目helloWord
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧!
1.浅谈Spring
Spring是一个源开的制控转反(Inversion of Control ,IOC)和面向切面(AOP)的容器框架.它的主要目得是简化业企开辟.
帮助文档路径,在springjar包的存在路径下:
spring-framework-3.2.2.RELEASE-dist\spring-framework-3.2.2.RELEASE\docs\spring-framework-reference\html 网页帮助文档
spring-framework-3.2.2.RELEASE-dist\spring-framework-3.2.2.RELEASE\docs\spring-framework-reference\pdf pdf文档
l IOC 制控转反
public class PersonServiceBean {
private PersonDao personDao = new PersonDaoBean();
public void save(Person person){
personDao.save(person);
}
}
PersonDaoBean 是在用应部内建创及维护的。所谓制控转反就是用应本身不责负依附对象的建创及维护,依附对象的建创及维护是由外部容器责负的。这样制控权就由用应转移到了外部容器,制控权的转移就是所谓转反。
l 依附注入(Dependency Injection)
当我们把依附对象交给外部容器责负建创,那么PersonServiceBean 类可以改成如下:
public class PersonServiceBean {
private PersonDao personDao ;
//通过构造器参数,让容器把建创好的依附对象注入进PersonServiceBean,当然也可以用应setter法方行进注入。
public PersonServiceBean(PersonDao personDao){
this.personDao=personDao;
}
public void save(Person person){
personDao.save(person);
}
}
所谓依附注入就是指:在运行期,由外部容器动态地将依附对象注入到组件中。
2.spring的长处
1)低降组件之间的耦合度,现实软件各层之间的耦解。
2)可以用应容器供给的多众服务,如:事务管理服务、消息服务等等。当我们用应容器管理事务时,开辟人员就不再要需手工制控事务.也不需理处杂复的事务传播。
3)容器供给单例模式持支,开辟人员不再要需自己编写现实代码。
容器供给了AOP术技,利用它很易容现实如权限截拦、运行期监控等功能。
4)容器供给的多众辅作类,用应这些类够能放慢用应的开辟,如: JdbcTemplate、 HibernateTemplate。
Spring对于主流的用应框架供给了集成持支,如:集成Hibernate、JPA、Struts等,这样更便于用应的开辟。
3.Spring的其他注意事项
l spring的配置件文模版
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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.5.xsd">
.....
</beans>
该配置模版可以从spring的参考手册(spring帮助寄存路径下/spring-framework-3.2.2.RELEASE-dist/spring-framework-3.2.2.RELEASE/docs/spring-framework-reference/html/beans.html第五章的beans-factory-metadata下)或spring的例子中到得。配置件文的取名可以恣意,件文可以寄存在任何目录下,但考虑到通用性,一般放在类路径下。
l 编写spring配置件文时,不能现出帮助信息
由于spring的schema件文位于络网上,如果呆板不能连接到络网,那么在编写配置信息时候就没法现出提示信息,解决法方有两种:
1)让呆板上彀,eclipse会主动从络网上下载schema件文并缓存在硬盘上。
2)手动添加schema件文,法方如下:
windwos->preferences->myeclipse->files and editors->xml->xmlcatalog;点"add",在现出的口窗中的Key Type选中择URI,在location选中"File system",然后在spring解压目录的dist/resources目录选中择spring-beans-2.5.xsd,回到设置口窗的时候不要急着关闭口窗,应把口窗中的Key Type为改Schema location,Key为改http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
4.配装Bean(第一讲)
一、纳容你的bean
bean工厂:最简略的容器,供给了基本的依附注入持支。建创各种类型的Bean.
用应上下文:建立在bean工厂基本之上,供给统系架构服务。
一.1 bean工厂分析
工厂设计模式,建创分发各种bean。配置好它们之间的写作关系,与参bean的生命周期。bean工厂只把bean的定义信息载进来,用到的时候才实例化。
一.2用应用应上下文
ApplicationCotext,spring更加高等的容器。功能强大:
1).供给本文信息剖析工具,包含对国际化持支。
2).供给载入件文资源的通用法方,如图片。
3).可以向注册为监听器的bean发送件事。
在很少的情况下,用应BeanFactory,如在移动设备。
三种经常用到的现实:
1).ClassPathXmlApplicationContext:从类路径中加载。
2).FileSystemXmlApplicationContext:从件文统系加载。
3).XmlWebApplicationContext:从web统系中加载。
ApplicationContext context = new FileSystemXmlApplicationContext("c:\foo.xml");
ApplicationContext context = new ClassPathXmlApplicationContext("foo.xml");
除了用应上下文供给的附加功能外,用应上下文与bean工厂的另一个主要区别是关于单例bean如何被加载。bean工厂延迟加载全部bean,直到getBean()法方被用调。用应上下文会在启动后预载入全部单例bean.这样可保确用应不要需等待他们被建创。
4.例案:第一个spring java项目
改例案只列举出主要配置件文和测试类,其他类没什么养营就不再赘述了;面下列出的几个配置件文和症结类中都要要需注意的事项和响应的释解注释。
喜马拉雅直冲霄汉,可上面有攀爬者的旗帜;撒哈拉沙漠一望无垠,可里面有跋涉者的脚印;阿尔卑斯山壁立千仞,可其中有探险者的身影;雅鲁藏布江湍急浩荡,可其中有勇敢者的故事。
- <SPAN style="FONT-FAMILY: KaiTi_GB2312; FONT-SIZE: 18px">spring.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <import resource="spring-dao.xml"/>
- <import resource="spring-service.xml"/>
- </beans>
- spring-dao.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- spring容器就是责负建创、管理、维护Bean 并且够能依附注入到响应组件上 -->
- <bean id="helloDaoImpl"class="www.csdn.spring.dao.impl.HelloDaoImpl"
- scope="prototype"></bean>
- <!-- spring-service.xml引用的改配置件文,所以在前者中加入了lazy-init="false",这里可以不写也会起作用;
- lazy-init性属的意思是:否是延迟加载,就是一建创 spring容器就去实例化对应容器对象,即行执改对象的构造器,而不是在用应的时候才去加载
- lazy-init="false" ,认默的值为default,但是default=false
- -->
- </beans>
- spring-service.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="helloServiceImpl"class="www.csdn.spring.service.impl.HelloServiceImpl" scope="singleton" lazy-init="false">
- <property name="helloDao" ref="helloDaoImpl"/>
- </bean>
- </beans>
- DemoTest类
- package www.csdn.spring.test;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import www.csdn.spring.dao.HelloDao;
- import www.csdn.spring.dao.impl.HelloDaoImpl;
- import www.csdn.spring.service.HelloService;
- import www.csdn.spring.service.impl.HelloServiceImpl;
- publicclass DemoTest {
- @Test
- publicvoid testHello(){
- // 容器建创实例化容器;读取 classes 路径面下的件文 参数动态参数、单个参数、组数等
- ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
- //用应dao和daoImpl的写法
- //写法一:用应dao获得bean;这里getBean括号内填写的是对应spring的配置件文中bean标签的id性属名
- HelloDao helloDao1 = (HelloDao) context.getBean("helloDaoImpl");
- //还可以这么写:但是一般不这么写,因为java中都是面向口接编程,所以声明的时候尽量声明口接的类型而不是现实类的类型
- HelloDaoImpl helloDaoImpl1 = (HelloDaoImpl) context.getBean("helloDaoImpl");
- //写法二:一样用应dao获得bean,官网这么写,较比范规的写法
- HelloDao helloDao2 = (HelloDao) context.getBean("helloDaoImpl",HelloDaoImpl.class);
- //还可以这么写:但是一般不这么写,因为java中都是面向口接编程,所以声明的时候尽量声明口接的类型而不是现实类的类型
- HelloDaoImpl helloDaoImpl2 = (HelloDaoImpl) context.getBean("helloDaoImpl");
- //用应service和serviceImpl的写法
- //写法三:用应service获得bean
- HelloService helloService1 = (HelloService) context.getBean("helloServiceImpl");
- //还可以这么写:但是一般不这么写,因为java中都是面向口接编程,所以声明的时候尽量声明口接的类型而不是现实类的类型
- HelloServiceImpl helloServiceImpl1 = (HelloServiceImpl) context.getBean("helloServiceImpl");
- //写法四:一样用应service获得bean,官网这么写,较比范规的写法
- HelloService helloService2 = (HelloService) context.getBean("helloServiceImpl",HelloServiceImpl.class);
- //还可以这么写:但是一般不这么写,因为java中都是面向口接编程,所以声明的时候尽量声明口接的类型而不是现实类的类型
- HelloServiceImpl helloServiceImpl2 = (HelloServiceImpl) context.getBean("helloServiceImpl",HelloServiceImpl.class);
- helloService2.sayHello();
- }
- }
- HelloServiceImpl类;要需注意的是serviceImpl中的
- package www.csdn.spring.service.impl;
- import www.csdn.spring.dao.HelloDao;
- import www.csdn.spring.service.HelloService;
- publicclass HelloServiceImpl implements HelloService{
- private HelloDao helloDao;
- public HelloServiceImpl() {
- System.out.println("HelloServiceImpl实例化");
- }
- //set依附注入很主要,不写会报错,不能读写helloDao这一性属
- /*
- * org.springframework.beans.NotWritablePropertyException: Invalid property 'helloDao' of bean class
- */
- publicvoid setHelloDao(HelloDao helloDao) {
- System.out
- .println("制控转反:用应程序本身不在责负建创helloDao对象,而是由spring容器责负建创、管理、维护,这样制控权转移,称为转反。"
- + "可以通过依附注入方法注入该HelloDao对象");
- this.helloDao = helloDao;
- }
- @Override
- publicvoid sayHello() {
- helloDao.sayHello();
- }
- }
- </SPAN>
文章结束给大家分享下程序员的一些笑话语录: 祝大家在以后的日子里. 男生象Oracle般健壮; 女生象win7般漂亮; 桃花运象IE中毒般频繁; 钱包如Gmail容量般壮大, 升职速度赶上微软打补丁 , 追女朋友像木马一样猖獗, 生活像重装电脑后一样幸福, 写程序敲代码和聊天一样有**。
容器类第一个spring项目helloWord相关推荐
- Eclipse新建一个Spring项目(最基础)
我在这里使用eclipse新建一个最基础的spring项目,提高初学者的实践能力,如果看完这篇文章后,你感到其实spring不难,可以轻松学会学好,我就达到写本篇文章的目的了. 首先,笼统介绍一下,什 ...
- spring的下载及在idea搭建spring框架和第一个spring项目
spring的下载 spring各版本jar包下载链接: commons logging jar下载链接: 你要是使用IDEA的话可以在这里加载spring框架 spring各版本jar包下载链接: ...
- 借助Spring站点开始一个spring项目
请导航至:https://start.spring.io/ 站点来开始使用start.Spring.io 填好相应的信息,并在dependencies中搜索相应的依赖,这里搜索Web依赖即可 然后点击 ...
- Java工作笔记-使用IDEA开始我的第一个Spring项目
目录 从Spring Initializr上下载项目 补充first-app-demo中的代码 运行及现象 从Spring Initializr上下载项目 链接如下:https://start.spr ...
- idea 新建一个spring项目
1.首先新建一个project 2.如图 3.选择工程的依赖 4.没用的文件可以删除 转载于:https://www.cnblogs.com/banml/p/11345001.html
- 使用Maven构建Spring项目“HelloWorld”
开始学习Spring,因为以前都没用过Maven,所以打算边学习Spring边熟悉Maven.这里自己使用Maven构建一个spring项目demo 1.新建maven项目: 2.构建Spring环境 ...
- 【Spring】IDEA中创建Spring项目
创建一个Spring项目 最近一直忙比赛和小论文的事儿,Java学习耽搁了一小段时间,好久没写博客了-开始快乐的学习Java-Spring框架!!!
- 完成我的第一个java项目“评标人才库管理系统”——环境配置+创项目
完成我的第一个java项目"评标人才库管理系统"--环境配置+创项目 idea配置maven环境 创建第一个Spring项目 idea配置maven环境 1.下载maven htt ...
- idea创建第一个SpringMVC项目
这几天一直想用idea重新学一下Spring,重温一下Spring的知识,今天我想用idea创建一个SpringMVC项目. 一,首先新建一个Spring项目,勾选如下 点击Next 填写projec ...
最新文章
- c语言的多文件组织,c++中多文件的组织
- linux暂停线程和恢复,是否有可能在Linux [暂停]中检测到线程已进行上下文切换?...
- C#,JAVA各版本之Thread.join()详解
- reduce 方法 (Array) (JavaScript)
- zend studio安装xdebug调试工具
- node和npm是什么_什么是npm? 面向初学者的Node Package Manager教程
- [014]模板-模板实参推导
- 数据结构与算法基础-数组
- python叮当猫代码_详细介绍一个利用html+css实现叮当猫的实例代码
- poj 1887 Testing the CATCHER dp 最大降序
- VS2013创建Windows服务
- Vscode新建文件输入感叹号不能生成头文件
- javaSSH集成的一些感想
- 【调剂】中国民航大学课题组招收硕士生,等离子体模拟领域,国家自然科学基金资助课题...
- VScode主题字体(正体,斜体修改)
- python爬虫爬取公众号_Python selenium爬取微信公众号文章代码详解
- 软件测试密码修改教程,软件测试之用户注册和密码修改测试用例设计
- 蘑菇街Java后台开发一二面面经
- 嵌入式开发专业术语概念汇总
- 工作流Activiti初体验—流程撤回【二】
热门文章
- 【线性代数】Linear Algebra Big Picture
- 面向工资编程和简历驱动开发
- 发送邮件mailto的使用
- android华为和小米,同样是升安卓9.0,为何华为和小米的差距这么大?
- 怎么永久关闭linux防火墙
- 解密Qt安装目录的结构
- OLI.System.2010 2CD工业水溶液电解质体系预测的标准
- c语言考试的说说带图片致自己,好听的说说带图片_说说带图片励志致自己
- 秀恩爱分得快 pta c++ (L2) 模拟
- LeetCode题解PDF百度网盘下载