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; } }
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>
创建测试类,看看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); } }
运行成功则打印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(); } }
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(); } }
userDao类:

package com.test.dao; import org.springframework.stereotype.Repository; @Repository public class UserDao { public void save(){ System.out.println("保存用户"); } }
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>
测试类:

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(); } }
运行测试类成功则打印“保存用户“
其中注解@Repository @Service @Controller @Component这四个注解是等效的
@Component为spring容器通用注解
@Repository代表此类是持久层
@Service表示业务层
@Controller 表示为控制层
依赖注入@Resource @Autowired 作用是相同的
@Resource默认按名称装配,如果找不到则按照类型装配
@Autowired默认按照类型装配,并默认不允许为null,可以通过required这个属性来控制,设置为false时,运行为空,如果上下文字存在不止一个相同的注入类型的话,或导致抛出异常BeanCreationException,配合@Qualifier注解处理此问题