- Java框架--spring(一、hello world)
- 一概述.
- 二.spring的优点
- 三.体系结构
- 四.spring的Hello World搭建
- Hello World1
- Hello World2
前言:Spring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为世界上最受欢迎的 Java框架 (来自官网)
一概述. Spring 是于 2003 年兴起的一个轻量级的,IOC(控制反转)和 AOP(面向切面编程) 的 Java 开发框架,它是为了简化企业级应用开发而生的。
-
轻量级
- jar包小,运行消耗内存资源小,核心包小
-
非侵入式
- spring框架代码不会侵入到我们的业务代码(用户管理 servlet service dao)
- 不需要继承spring特定的类,通过配置依赖注入后使用类
- xxServlet extends HttpServlet(侵入式)
-
IOC
-
我们以前写代码,在哪儿需要一个对象,就地new一个
-
IOC(Inversion Of Control),控制反转 ( 把创建对象的控制权 反转 给spring)
-
由 Spring IoC 容器集中统一管理对象,需要用对象时,从容器中拿出来
-
-
AOP
- Aspect Oriented Programming ; 面向切面编程
- 当在原程序的基础上添加功能时,以前我们需要在源代码中修改(保存日志功能,管理事务commit)
- AOP的思想:帮我们动态代理调用,而不需要修改源代码
-
一站式框架
-
是一个后端管理框架
-
集基础容器,数据访问(jdbc,事务管理),web(Servlet),AOP 为一身
-
-
Core Container(核心容器):
- Beans: 管理 Beans
- Core: Spring 核心
- Context: 配置文件
- expressionLanguage: SpEL 表达式
-
AOP(切面编程)
-
AOP 框架: Aspects
-
Data Access(数据库整合):
- JDBC, ORM, OXM, JMS, Transaction
-
Web(MVC Web 开发):
-
Web, Servlet, Portlet, Struts
-
Test(Junit 整合)
- Maven 导入 spring 核心基础 jar
org.springframework spring-context5.2.9.RELEASE
- 写spring的配置文件
- 编写一个实体类
package com.ffyc.spring.model; import java.util.List; public class User { private String name; private Integer age; public User() { System.out.println("无参构造被调用了"); } public User(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { System.out.println("setName()方法被调用了"); this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User{" + "name='" + name + ''' + ", age=" + age + '}'; } }
- 在将实体类配置到spring配置文件中
- 测试spring
package test; import com.ffyc.spring.model.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext app = new ClassPathXmlApplicationContext("springConfig.xml");//ClassPathXmlApplicationContext存放配置实体类的对象的容器 //User user = (User) app.getBean("别名"); User user1 = (User) app.getBean("user1",User.class);//反射 User user2 = (User) app.getBean("user2",User.class); System.out.println(user1); System.out.println(user2); } }
可以看到执行了一次构造方法,且两个对象地址相同,是同一个对象的引用
Hello World2创建一个Dao层的类UserDao
package com.ffyc.spring.dao; public class UserDao { public void save(){ System.out.println("保存用户信息"); } }
创建一个服务层的类UserService
package com.ffyc.spring.service; import com.ffyc.spring.dao.UserDao; public class UserService { private UserDao userDao; public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void saveUser(){ userDao.save();//调用UserDao的方法 } }
在配置文件中管理这两个类
测试
package test; import com.ffyc.spring.model.User; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test1 { public static void main(String[] args) { ApplicationContext app = new ClassPathXmlApplicationContext("springConfig.xml");//读取配置文件,创建其中管理的对象 UserService service = app.getBean("userService",UserService.class);//取出UserService对象 service.saveUser(); } }
可以看到方法被调用了,我们并没有创建他们的对象,在需要的时候从容器中取出来使用即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)