spring 框架初识
昨天 我学习了一下 spring 框架 只是一个初始的认识
java因为有了他,才能活到今天
spring 英文里有春天、弹簧、跳跃和泉眼的意思,在JAVA编程语言中也是一种IOC框架 。也可用于一个人处于青春阶段的美好年华。
spring 框架 Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
两大核心 Ioc 和 AOP
使用框架 需要3个包 使用软件依旧是 IDEA 下面发节点
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.0.RELEASE</version > </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.0.RELEASE</version > </dependency> <!--aop使用的jar--> <dependency> <groupId> org.aspectj</groupId > <artifactId> aspectjweaver</artifactId > <version> 1.8.7</version > </dependency>
先来一个小的 案例吧
首先 配置文件 你在有了以上的包之后 就可以创建 spring 的 配置文件 了 ,命名的话还是规范一点 , applicationcontext
之后创建一个类 , 试验一下数据就可以 代码入下
1 public class happservice { 2 3 public happservice(){ 4 5 System.out.println("=======happservice=========="); 6 7 } 8 9 private String name; 10 11 private Integer age; 12 13 public Integer getAge() { 14 return age; 15 } 16 17 public void setAge(Integer age) { 18 this.age = age; 19 } 20 21 public void show(){ 22 23 System.out.println("name:"+this.name); 24 25 } 26 27 public String getName() { 28 return name; 29 } 30 31 public void setName(String name) { 32 this.name = name; 33 } 34 }
这就是一个简单类,两个属性,一个实例化
接下来,就在 小配置里写东西了
在小配置里写一个 bean 节点 有 id 和 class属性 在中间 有 property节点 属性有 name 和 Value
bean id值为之后要用的时候输入的值 class为路径
property name为类中的属性 Value就为值
<bean id="services" class="cn.study.dao.happservice">
<property name="name" value="啦啦啦"></property>
<property name="age" value="12"></property>
</bean>
赋值之后我们就开始编写实现类
下面为测试方法
@Test public void Spring(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); happservice bean = (happservice) context.getBean("services"); System.out.println(bean.getName()+bean.getAge()); }
第一行 获取 配置文件 ,拿到 对象
使用getBean 拿到 bean, 里面的值为 bean节点的id值,强转为我们的类就行
然后 使用get输出,看看值有没有赋上去
之后你的控制台应该会打印 刚刚在bean里赋值
啦啦啦12
现在来讲 一下喷墨打印机 墨盒 纸张 打印机 先建好3个包
墨盒 只有 一个 颜色属性 color 分为 黑白 彩色 墨盒
ink 墨盒接口中 只有一个 颜色 方法就行
public interface ink { public String color(); }
接下来 是实现类 两个 一个 黑白 一个 彩色 blackink colorink 实现墨盒接口
public class blackink implements ink { public String color() { return "黑白墨盒"; } } public class Colorink implements ink { public String color() { return "彩色墨盒"; } }
下面就是纸张了 纸张 至少有个规格吧 A4 A5
还是先建立一个 纸张 接口 写个 规格的方法吧
public interface Paper { public String Size(); }
接下来就是实现接口的A4 A5两个类了
public class A4Paper implements Paper { public String Size() { return "A4纸"; } }
public class A5Paper implements Paper { public String Size() { return "A5Paper"; } }
接下 就是 打印机了
创建 两个 属性 一个 是 墨盒 一个 是 纸张
然后使用就行
public class Pinter { private ink in; private Paper paper; public void pin(){ System.out.println("用"+in.color()+"在用"+paper.Size()); } public ink getIn() { return in; } public void setIn(ink in) { this.in = in; } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; } }
下面 就去写 小配置
<bean id="ink" class="cn.study.ink.Colorink"></bean> <bean id="Paper" class="cn.study.paper.A5Paper"></bean> <bean id="Pinter" class="cn.study.printer.Pinter"> <property name="in" ref="ink"></property> <property name="paper" ref="Paper"></property> </bean>
上面 有 墨盒 纸张 打印机 的 节点 上面两个节点 看 class 用了 彩色 墨盒 A5的纸张进行打印 打印机则在自己的bean节点里使用他们 用 ref,值为上面的id ,接下来 撰写 测试类
public void pinter(){ ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); Pinter pinter = (Pinter) context.getBean("Pinter"); pinter.pin(); }
这就是 测试,现在我把控制台截图下来
这就是一个打印机的案例了
其实 在每一次使用时 ,都会 new 一遍对象 ,我上面还输出了 别的东西 ,那是另一个 累的无参构造 ,当你在使用配置文件时 ,他就帮你做了一遍new操作,并不是没有