Spring环境搭建

JAVA学习网 2019-05-24 22:59:07

spring框架结构:

                                                     

  从上图可以看到Spring的核心容器是: beans,core,context,spel这个四个容器,所以需要先导入这四个容器所对应的包:spring-beans-x.jar,spring-core-x.jar,spring-context-x.jar,spring-expression-x.jar ,其中最后一位的-x代表Spring版本。

  当导入上述包后,由于其引用了日志管理的jar,所有还需要导入commons-logging.jar。至此Spring环境所需要的jar就满足所需情况了。

工程结构:

 

  搭建好开发环境后,现在开始进行测试,首先创建一个实体类User;

package com.test.bean;

public class User {

    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}
View Code

Spring环境需要创建一个xml来管理所有的Bean文件,一般命名为applicationContext.xml,这个名字可以自己定义,然后将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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        <!-- 其中id为标识,class为bean的全路径 -->
        <bean id="user" class="com.test.bean.User"></bean>
</beans>
View Code

创建测试类,看看spring环境是否搭建成功

package com.test.start;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.bean.User;

public class TestSpringController {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User user = (User) context.getBean("user");
        System.out.println(user);
    }
}
View Code

运行成功则打印User实体类

                                       

如果想要使用注解,则需要导入另外一个jar包spring-aop-x.jar,

  现在做一个简单的保存数据来测试注解是否成功

 工程结构:

userController类:

package com.test.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.test.service.UserService;

@Controller
public class UserController {

    @Resource
    private UserService userService;
    
    public void save(){
        userService.save();
    }
}
View Code

userService类:

package com.test.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.test.dao.UserDao;

@Service
public class UserService {

    @Resource
    private UserDao userDao;
    
    public void save(){
        userDao.save();
    }
}
View Code

userDao类:

package com.test.dao;

import org.springframework.stereotype.Repository;


@Repository
public class UserDao {

    public void save(){
        System.out.println("保存用户");
    }
}
View Code

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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        <!-- 其中id为标识,class为bean的全路径 -->
        <!-- <bean id="user" class="com.test.bean.User"></bean> -->
       <context:component-scan base-package="com.test"></context:component-scan>
</beans>
View Code

测试类:

package com.test.start;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.bean.User;
import com.test.controller.UserController;

public class TestSpringController {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//        User user = (User) context.getBean("user");
//        System.out.println(user);
        
        UserController user = (UserController) context.getBean("userController");
        user.save();
    }
}
View Code

运行测试类成功则打印“保存用户“

 

其中注解@Repository @Service @Controller @Component这四个注解是等效的

@Component为spring容器通用注解

@Repository代表此类是持久层

@Service表示业务层

@Controller 表示为控制层

 

依赖注入@Resource  @Autowired 作用是相同的               

@Resource默认按名称装配,如果找不到则按照类型装配

@Autowired默认按照类型装配,并默认不允许为null,可以通过required这个属性来控制,设置为false时,运行为空,如果上下文字存在不止一个相同的注入类型的话,或导致抛出异常BeanCreationException,配合@Qualifier注解处理此问题

阅读(2180) 评论(0)