Spring-----入门
Spring 入门
一、首先导入核心jar包
commons-logging-1.1.3.jar 日志
spring-beans-4.2.4.RELEASE.jar bean节点
spring-context-4.2.4.RELEASE.jar spring上下文节点
spring-core-4.2.4.RELEASE.jar spring核心功能
spring-expression-4.2.4.RELEASE.jar spring表达式相关表
二、核心配置文件
Spring配置文件:applicationContext.xml 一般都写这个文件名
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> <!--IOC: inverse of Control 控制反转:把创建对象的权利给spring容器
class:指明需要创建对象的类名和包名
spring通过反射来创建对象,默认使用newInstance()来创建对象
所以需要类中必须定义空参构造方法
--> <bean name="userService" class="com.luo.ioc.UserServiceImpl"></bean> </beans>
创建一个对象类接口及实现它的类
package com.luo.ioc;
public interface UserService {
void addUser();
}
package com.luo.ioc;
public class UserServiceImpl implements UserService {
@Override
public void addUser() {
System.out.println("Spring ioc 控制反转我来啦");
}
}
测试类:
package com.luo.test; import com.luo.ioc.UserService;
import com.luo.ioc.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test_ioc { @Test
public void test1(){
//测试ioc 控制反转
String path="applicationContext_ioc.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(path);
UserService userService = (UserService) applicationContext.getBean("userService");
userService.addUser();
}
}
Spring中的API:
applicationContext:在加载spring配置文件时候创建对象
ClassPathXmlApplicationContext:加载classPath下的spring配置文件(正常人都用这个)
FileSystemXmlApplicationContext:根据文件的路径加载,不要求必须在项目的src下
BeanFactory:在加载配置文件的时候不创建对象 (基本不用了)
测试类:
测试 ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext @Test
public void test1(){
//测试ioc 控制反转
String path="applicationContext_ioc.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(path);
UserService userService = (UserService) applicationContext.getBean("userService");
userService.addUser();
} @Test
public void test2()
{ //C:\Users\qq\IdeaProjects\bean0.xml //spring的配置文件没有放在类路径下
ApplicationContext context=new FileSystemXmlApplicationContext("bean0.xml"); UserService userService=(UserService) context.getBean("userId"); userService.addUser();
} 测试BeanFactory
@Test
public void test1(){
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext_api.xml"));
UserService userService =(UserService) factory.getBean("userService");
userService.addUser();
}
用到的接口和类的代码如下:就写个依赖注入的 其他的都一样的 就不写了
//Dao层接口
package com.luo.di;
public interface UserDao {
void addUser();
}
//Dao层实现类
package com.luo.di;
public class UserDaoImpl implements UserDao{
@Override
public void addUser() {
System.out.println("spring di 依赖注入 我来啦");
}
}
//Service接口
package com.luo.di;
public interface UserService {
void addUser();
}
//ServiceImpl接口实现Service接口
package com.luo.di;
public class UserServiceImpl implements UserService {
//需要UserDao
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void addUser() {
userDao.addUser();
}
}
依赖注入的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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> <!--依赖注入--> <bean name="udImpl" class="com.luo.di.UserDaoImpl"></bean>
<bean name="usImpl" class="com.luo.di.UserServiceImpl">
<property name="userDao" ref="udImpl"></property>
</bean>
</beans>
ref : 引用
Spring-----入门的更多相关文章
- Spring入门学习(一)
SpringMVC基础平台补充(2016.03.03) 如果想要开发SpringMVC,那么前期依次安装好:JDK(jdk-8u74-windows-x64,安装后配置环境变量JAVA_HOME和CL ...
- Spring入门(10)-Spring JDBC
Spring入门(10)-Spring JDBC 0. 目录 JdbcTemplate介绍 JdbcTemplate常见方法 代码示例 参考资料 1. JdbcTemplate介绍 JdbcTempl ...
- Spring入门(9)-AOP初探
Spring入门(9)-AOP初探 0. 目录 什么是面向切面编程 AOP常见术语 AOP实例 参考资料 1. 什么是面向切面编程 Aspect Oriented Programming(AOP),即 ...
- Spring入门(8)-基于Java配置而不是XML
Spring入门(8)-基于Java配置而不是XML 本文介绍如何应用Java配置而不是通过XML配置Spring. 0. 目录 声明一个简单Bean 声明一个复杂Bean 1. 声明一个简单Bean ...
- Spring入门(7)-自动检测Bean
Spring入门(7)-自动检测Bean 本文介绍如何自动检测Bean. 0. 目录 使用component-scan自动扫描 为自动检测标注Bean 1. 使用component-scan自动扫描 ...
- Spring入门(6)-使用注解装配
Spring入门(6)-使用注解装配 本文介绍如何使用注解装配. 0. 目录 使用Autowired 可选的自动装配 使用Qualifier选择 1. 使用Autowired package com. ...
- Spring入门(5)-自动装配Bean属性
Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...
- Spring入门(4)-注入Bean属性
Spring入门(4)-注入Bean属性 本文介绍如何注入Bean属性,包括简单属性.引用.内部Bean.注入集合等. 0. 目录 注入简单值 注入引用 注入内部Bean 装配集合 装配空值 使用命名 ...
- Spring入门(3)-Spring命名空间与Bean作用域
Spring入门(3)-Spring命名空间与Bean作用域 这篇文章主要介绍Spring的命名空间和Bean作用域 0. 目录 Spring命名空间 Bean作用域 1. Spring命名空间 在前 ...
- Spring入门(2)-通过构造器注入Bean
Spring入门(2)-通过构造器注入Bean 前一篇文章将了最基本的spring例子,这篇文章中,介绍一下带有参数的构造函数和通过构造器注入对象引用. 0. 目录 带有参数的构造函数 通过构造器注入 ...
随机推荐
- ElasticSearch(十)Elasticsearch检索出的数据列表按字段匹配的优先顺序及搜索单词拼音一部分搜不到数据
检索出的数据列表按字段匹配的优先顺序 一.举例 比如,发布一篇文章,文章包括基本的字段包括标题.发布时间.点击率.关键字.内容.当在页面中输入“教育”搜索关键词,会检索出指定字段包括“教育”的所有数据 ...
- 用AtomicStampedReference解决ABA问题
在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然 ...
- 2.裴波那契(Fibonacci)数列
裴波那契(Fibonacci)数列 f(n)= ⎧⎩⎨0,1,f(n−1)+f(n−2),n =0n =1n>1 求裴波那契数列的第n项.(题目来自剑指offer) 1.递归解法,效率很低的解法 ...
- CEF JS实现获取剪贴板图片的DataURL
转载:https://www.deanhan.cn/js-paste-upload.html 转载:https://segmentfault.com/a/1190000002915597 转载:htt ...
- 一些Java基础方面问题的总结
1.Overloaded的方法是否可以改变返回值的类型? 答案:可以. overload是重载,overloaded是什么?重载的过去式?我还以为是我没见过的注解,也没有给限定条件,代码测试一下. p ...
- [转载]使用IEDriverServer.exe驱动IE11,实现自动化测试
转自:https://www.cnblogs.com/feiquan/p/8531618.html 下载地址: http://dl.pconline.com.cn/download/771640-1. ...
- CentOS7攻克日记(三) —— 安装Python3.6
我是在EVERNOTE上面写的,本来格式是有代码段的,结果复制上来就没有了,所以会有一点乱,我就不调整了 我主要安装的是python环境,这一篇主要解决一下python的问题.在这里给个建议,安装 ...
- 从Scratch到Python——python turtle 一种比pygame更加简洁的实现
从Scratch到Python--python turtle 一种比pygame更加简洁的实现 现在很多学校都开设了Scratch课程,学生可以利用Scratch创作丰富的作品,然而Scratch之后 ...
- laravel 框架的 csrf
由于 laravel 框架自带 csrf 防护, 也就是通过中间件验证请求的 token, 所以 form 表单必须如下设置才可以正常提交, 否则会 419: <form method=&quo ...
- ssm+redis整合(通过aop自定义注解方式)
此方案借助aop自定义注解来创建redis缓存机制. 1.创建自定义注解类 package com.tp.soft.common.util; import java.lang.annotation.E ...