Spring框架

Spring框架

        Spring框架是由于软件开发的复杂性而创建的。Spring的用途不仅仅限于服务器端的开发。从简单性、
可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。Spring是一个轻量级控制反转 (IoC)
和面向切(AOP)的容器框架。

1、spring的设计模式

	xxx.xml容器使用的是工厂模式,在内部只能new一次,所以使用的是单例模式
    容器:用一个xxx.xml文件来表示(丢入容器的类在这个文件里面配置才算把类放入容器)
	      其中类与类之间的关系映射也配置在其中

2、控制反转(IoC),可以看作是更高级的工厂模式,是Java框架的核心

	简单来说就是把Javabean交给容器来管理
	官方:如果A类中直接创建它所依赖的B类对象,那么就可以说A依赖B。控制反转则是指A类中不
	  直接创建B类对象,而是由外部容器将B类对象的引用传递给它。
	      因此,控制反转就是指(一个对象如何获得它所依赖的对象)这个控制权的反转。控制反转
	  使得控制权由应用代码中转移到了外部容器。

3、Spring框架的主要功能:

	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);


    }
    }

输出结果证明:
Spring框架_第1张图片
输出结果为true,则证明是单例模式
User user = (User) context.getBean(“user”);//对应的就是spring-bean.xml中对应的id
User user1 = (User)context.getBean(User.class);
以上两条语句是spring的连接方式

你可能感兴趣的:(Spring框架)