Spring入门
Posted huainian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring入门相关的知识,希望对你有一定的参考价值。
一、在Spring诞生之前,也有一个容器叫EJB 现在有些公司都还在用此容器。此容器它是重量级的,而且侵入性非常强,所谓侵入性就是必须继承或者实现指定的类和接口,而且卖的也非常贵。
Spring是一个轻量级的IoC和AOP容器框架:
a、轻量级:程序实现不是很复杂,代码不是很多,占用资源不是很多,没有侵入性;(通常不要求继承特定类或者实现特定接口);
b、IoC(Inversion of Control 控制反转):对象创建责任的反转(重点,核心); Dependency Injection (DI)依赖注入;
c、Aop(Aspect Oriented Programming):一种面向横切面编程的思想方式,可以进行功能性扩展 ,面向横切面(AOP)编程;
d、容器:可以容纳对象,并且可以控制对象的生命周期;
二、使用步骤
1、创建一个java项目,并在项目中创建lib文件,将spring的jar包及spring依赖的jar包放入lib文件中,选中所有jar包鼠标右键Build Path;(注意:spring的jar包及spring依赖的jar包去官网下载即可)
2、右键点击项目工程--Myeclipse--project facets--install spring facet--Add Spring Capabilites...,创建编写框架的核心配置文件,存放在src目录下: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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> </beans>
三、setter注入
这是最简单的注入方式
1、首先创建好三个类:User、User1、User2
package cn.com.beans; public class User1 { public void ceshi1() { System.out.println("User1的ceshi1方法!"); } }
package cn.com.beans; public class User2 { public void ceshi2() { System.out.println("User2的ceshi2方法!"); } }
package cn.com.beans; public class User { private User1 user1; //User1类 private User2 user2; //User2类
//创建属性的get,set方法 public User1 getUser1() { return user1; } public void setUser1(User1 user1) { this.user1 = user1; } public User2 getUser2() { return user2; } public void setUser2(User2 user2) { this.user2 = user2; } public void ceshi() { user1.ceshi1(); user2.ceshi2(); System.out.println("User的ceshi方法!"); } }
2、在配置文件applicationContext.xml中注入
<!--配置bean,配置后该类由spring管理-->
<bean id="user" class="cn.com.beans.User" autowire="byType"></bean>
<!--(1)依赖注入,配置当前类中相应的属性-->
<property name="springDao" ref="springDao"> </property> </bean>
<?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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <!-- 将实体类注入Spring容器,class为实体类的全路径 --> <bean id="user" class="cn.com.beans.User" autowire="byType"></bean> <bean id="user1" class="cn.com.beans.User1"></bean> <bean id="user2" class="cn.com.beans.User2"></bean> </beans>
3、编写测试类
package cn.com.beans; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { //new一个ClassPathXmlApplicationContext对象,将它负值给ctx ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //调用getBean()方法,User.class是实体类的映射,user是applicationContext.xml中注入类的id User user=ctx.getBean(User.class, "user"); //调用实体类中的ceshi()方法 user.ceshi(); } }
4、测试结果
以上是关于Spring入门的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段