Spring框架是由于软件开发的复杂性而创建的。Spring的用途不仅仅限于服务器端的开发。从简单性、
可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。Spring是一个轻量级控制反转 (IoC)
和面向切(AOP)的容器框架。
xxx.xml容器使用的是工厂模式,在内部只能new一次,所以使用的是单例模式
容器:用一个xxx.xml文件来表示(丢入容器的类在这个文件里面配置才算把类放入容器)
其中类与类之间的关系映射也配置在其中
简单来说就是把Javabean交给容器来管理
官方:如果A类中直接创建它所依赖的B类对象,那么就可以说A依赖B。控制反转则是指A类中不
直接创建B类对象,而是由外部容器将B类对象的引用传递给它。
因此,控制反转就是指(一个对象如何获得它所依赖的对象)这个控制权的反转。控制反转
使得控制权由应用代码中转移到了外部容器。
1.降低类之间的耦合度,实现软件各层之间的解耦。Spring根据xml配置管理和装配对象,
避免硬编码造成的程序过度耦合。
2.根据xml配置帮助管理事务,开发者不需要编写事务控制代码,提高开发效率和质量。
3.Spring提供单例模式支持,开发者不需要自己编写实现代码。
4.Spring提供了AOP支持,开发者很容易实现如权限拦截、运行期监控等功能。
5.Spring提供了众多辅助类,使用这些类能够方便应用的开发。如:
JdbcTemplate、 HibernateTemplate。 6,Spring支持各种主流的应用框架,
如:Hibernate、Struts、MyBatis等,便于应用的开发。
官网:http://www.springsource.org/spring-framework
下载:http://maven.springframework.org/release/org/springframework/spring/
1、首先在pom。xml中配置相关的坐标,进行jar包的导入(我是用的是idea,所以自动下载导入)
4.0.0
com.lmm
Spring_demo1
1.0-SNAPSHOT
org.springframework
spring-context
5.0.0.RELEASE
org.springframework
spring-test
5.0.0.RELEASE
test
org.springframework
spring-core
5.0.0.RELEASE
org.springframework
spring-web
5.0.0.RELEASE
org.springframework
spring-beans
5.0.0.RELEASE
commons-logging
commons-logging
1.2
org.springframework
org.springframework.context.support
3.2.2.RELEASE
2、以用户实体类为例,第二部编写用户实体类,来测试是单例模式和spring-bean.xml来管理类
public class User {
private int id ;
private String username;
private String sex;
private Date birthday;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", sex='" + sex + '\'' +
", birthday=" + birthday +
", address='" + address + '\'' +
'}';
}
}
3、建一个spring-bean.xml文件,给调用者来调用
4、编写测试类来测试
public class UserTest {
@Test
public void testUser(){
//获取配置文件spring-bean.xml
ApplicationContext context = new ClassPathXmlApplicationContext("classpathspring-bean.xml");
//获取User实例
User user = (User) context.getBean("user");//对应的就是spring-bean.xml中对应的id
user.setUsername("黄佳琪");
System.out.println(user.getUsername());
User user1 = (User)context.getBean(User.class);
System.out.println(user1.getUsername());
System.out.println(user==user1);
}
}
输出结果证明:
输出结果为true,则证明是单例模式
User user = (User) context.getBean(“user”);//对应的就是spring-bean.xml中对应的id
User user1 = (User)context.getBean(User.class);
以上两条语句是spring的连接方式