初学Spring
Spring是当今最流行的框架,今天开始,dayday同学要正式开始学习Spring了,加油
以下是一个简单的应用Spring框架的java程序
src\dayday\HelloSpring.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class HelloSpring {
private String name;
public void setName(String name){
this.name=name;
}
public void println(){
System.out.println("hello "+name+" ,study Spring hard!!!");
}
}
src\dayday\Main.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
//获得Spring容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
// 获得一个bean,spring中所有的java类都为bean
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
//调用类中的方法
hellospring.println();
// 原来不用spring框架的时候,将得到同样的运行结果
HelloSpring hellospring=new HelloSpring();
helloSpring.setName("dayday");
hellospring.println();
} }
src\beans.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为创建bean(类)的名字
//name中的值(String)会相应的调用类中setString()的方法,value表示对应属性的值,也可以是ref,ref中是另外一个bean
<bean id="hellospring" class="dayday.HelloSpring">
<property name="name" value="dayday"/>
</bean>
//另外一种方式,通过p标签进行配置,如果要通过p标签配置的话,bean中不能含有有参构造函数
<!--通过p标签进行配置-->
<bean name="hellospring" class="dayday.HelloSpring" p:name="dayday" p:book-ref="book"/>
<bean name="book" class="dayday.Book" p:bookname="《Spring MVC》"/>
</beans> 运行结果
hello dayday ,study Spring hard!!! <property>中使用ref
src\dayday\HelloSpring.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class HelloSpring {
private Book book;
private String name;
public void setName(String name){
this.name=name;
}
public void setBook(Book book){
this.book=book;
}
public void println(){
System.out.println("hello "+name+" ,study Spring hard!!!"+book.print());
} public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
src\dayday\Book.java
package dayday; /**
* Created by I am master on 2016/11/28.
*/
public class Book {
private String bookname;
public void setBookname(String bookname){
this.bookname=bookname;
}
public String print(){
return "read "+bookname;
}
}
src\dayday\Main.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
src\dayday\beans.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="hellospring" class="dayday.HelloSpring">
<property name="name" value="dayday"/>
<property name="book" ref="book"></property>
</bean>
<bean id="book" class="dayday.Book">
<property name="bookname" value="《Spring mvc》"></property>
</bean>
</beans>
通过构造注入,之前的都为设值注入
//若通过构造注入,bean(java类)中必须要有构造函数
通过<constructor-arg.../>注入,value="String等基本类型" ref=“bean”
可以通过index属性指定构造参数值将作为第几个构造参数值,index="0"表明作为第一个构造函数参数值,错位开了
一般采用设值注入为主,构造注入为辅
src\dayday\HelloSpring.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class HelloSpring {
private Book book;
private String name; public HelloSpring(String name,Book book){
this.name=name;
this.book=book;
}
public void println(){
System.out.println("hello "+name+" ,study Spring hard!!!"+book.print());
} public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
src\dayday\Book.java
package dayday; /**
* Created by I am master on 2016/11/28.
*/
public class Book {
private String bookname;
public Book(String bookname){
this.bookname=bookname;
}
public String print(){
return "read "+bookname;
}
}
src\dayday\Main.java
package dayday; import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; /**
* Created by I am master on 2016/11/28.
*/
public class Main {
public static void main(String[] args){
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
HelloSpring hellospring=ctx.getBean("hellospring",HelloSpring.class);
hellospring.println();
} }
src\dayday\beans.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="hellospring" class="dayday.HelloSpring">
<constructor-arg value="dayday"></constructor-arg>
<constructor-arg ref="book"></constructor-arg>
</bean>
<bean id="book" class="dayday.Book">
<constructor-arg value="《Spring MVC》"></constructor-arg>
</bean>
</beans>
bean作用域的配置
用scope属性来配置bean的作用域
Singleton:默认值,容器初始时创建bean实例
(在执行 <bean id="hellospring" class="dayday.HelloSpring">这句是调用无参构造函数创建)
在整个容器的生命周期内只创建这一个bean,单例的
常用的还有prototype,每次调用getbean()方法就调用构造函数创建一个bean
初学Spring的更多相关文章
- 初学Spring有没有适合的书
初学者之前没有阅读java框架源码的习惯.没有阅读过源码,知道整体流程么?知道依赖注入的概念么?知道aop么?知道其中用到了哪些设计模式么?再说了,如果一上手就是源码?难道你没有注意到Spring的类 ...
- 初学 Spring boot 报错 Whitelabel Error Page 404
按照教程,写了个最简单的 HelloWorld,尼玛报错 -->Whitelabel Error Page 404. 网上99%都是项目结构不对,说什么 Application放在父级 pack ...
- 初学spring boot踩过的坑
一.搭建spring boot环境 maven工程 pom文件内容 <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...
- 记录初学Spring boot中使用GraphQL编写API的几种方式
Spring boot+graphql 一.使用graphql-java-tools方式 <dependency> <groupId>com.graphql-java-kick ...
- 初学 spring
1.spring 开发环境,包含eclipse https://spring.io/tools3/sts/all/
- 初学spring(二)
1.spring推荐使用接口编程,配合di可以达到层与层之间解耦
- 初学spring(一)
1.spring 在ssh 中所处的位置 struts 是web框架(jsp,action,actionform) hibernate 是orm框架,处于数据持久层 spring 是容器框架,配置be ...
- 初学spring之入门案列
spring其实是一个很大的开源框架,而我学的就是spring framework,这只是spring其中的一小部分.有疑惑的可以去官网去看看,spring官网我就不提供了.一百度肯定有.和sprin ...
- 初学Spring的感觉
1.使用接口 不同的类实现同一接口后都会变成同一类型的类. spring作业1的思路 lab1: 建立一个有一个输出方法的接口类|并建一个英语类和一个数学类实现该接口. 这两个实现类都重写了那 ...
随机推荐
- RDLC隔行变色的实现
在RDLC设计页面设置行属性中的Background为: =IIF((RowNumber(Nothing)) Mod 2 =1,"Transparent","#F6FAF ...
- node.js基础 1之 HTTP流程实例
好详细的说,要反复看反复使用~~~ 通过分析其中的Timing可以分析页面慢的瓶颈在哪 与上图对应: Stalled: 等待时机,浏览器要发生请求,到能发出请求的时间.不包括DNS查询和连接建立时间 ...
- 第一种SUSE Linux IP设置方法
第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168. ...
- Ajax_showHint() 函数
showHint() 函数实现的功能是:当用户在输入框中键入字符时,网页如何与 web 服务器进行通信,完整的代码如下: <html><head><script type ...
- 网站整站下载工具—HTTrack Website Copier
HTTrack是一个免费和易用的离线浏览工具(浏览器),它可以允许你下载整个WWW网站至本地目录,并且通过遍历网站目录获取HTML,图片和其他文件,是安全渗透测试和居家旅行必备软件. WinHTTra ...
- Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
//获取屏幕尺寸,不包括虚拟功能高度 getWindowManager().getDefaultDisplay().getHeight(); 获取屏幕原始尺寸高度,包括虚拟功能键高度, private ...
- ASCII表
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...
- String字符串类课后作业
String动手动脑和课后作业 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 结果: 总结:在Java中,内容相同的字串常量(&quo ...
- Angular js 之动态传数据到下一个页面和动态通过ng-click进入不同的页面
+关于Angular js中一些千篇一律的后台获取数据 首先在services.js里面把服务写好 然后在controller里面把数据给打印出来 (首先需要把数据注入) +关于Angular js中 ...
- JSON简单介绍
//JSON是一种数据格式//JSON比较像php里面的关联数组,它里面存的内容也是key和value成对存在的 JSON写法格式 var js = { "one":"h ...