Spring入门详细教程(二)
前言
本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇。链接如下:
Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/10165538.html
一、spring注入方式
1、set方法注入
<bean name="user" class="com.jichi.entity.User" >
<property name="name" value="小明"></property>
<property name="age" value="18"></property>
</bean>
2、构造方法注入
<bean name="user" class="com.jichi.entity.User" >
<constructor-arg name="name" value="小红" ></constructor-arg>
<constructor-arg name="age" value="50"></constructor-arg>
</bean>
3、p名称空间注入
xmlns:p="http://www.springframework.org/schema/p"
<bean name="user" class="com.jichi.entity.User" p:name="小白" p:age="10"></bean>
4、spel表达式注入
<bean name="user" class="com.jichi.entity.User">
<property name="name" value="小红"></property>
<property name="age" value="18"></property>
</bean>
<bean name="user1" class="com.jichi.entity.User">
<property name="name" value="#{user.name}"></property>
<property name="age" value="#{user.age}"></property>
</bean>
二、spring复杂类型注入
public class Collection {
public String[] arr;
public List<String> list;
public Map<String,Object> map;
public Properties props;
public String[] getArr() {
return arr;
}
public void setArr(String[] arr) {
this.arr = arr;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public Properties getProps() {
return props;
}
public void setProps(Properties props) {
this.props = props;
}
@Override
public String toString() {
return "Collection [arr=" + Arrays.toString(arr) + ", list=" + list + ", map=" + map + ", props=" + props + "]";
}
}
1、数组类型注入
<bean name="collect" class="com.jichi.entity.Collection">
<property name="arr">
<array>
<value>xiaohei</value>
<value>xiaobai</value>
</array>
</property>
</bean>
2、list类型注入
<bean name="collect" class="com.jichi.entity.Collection">
<property name="list">
<list>
<value>xiaohei</value>
<value>xiaobai</value>
</list>
</property>
</bean>
3、map类型注入
<bean name="collect" class="com.jichi.entity.Collection">
<property name="map">
<map>
<entry key="name" value="xiaohei"></entry>
<entry key="age" value="18"></entry>
</map>
</property>
</bean>
4、properties类型注入
<bean name="collect" class="com.jichi.entity.Collection">
<property name="props">
<props>
<prop key="name">xiaohei</prop>
<prop key="age">18</prop>
</props>
</property>
</bean>
三、配置spring随web项目启动初始化
在web.xml中配置。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
四、spring的分配置文件
方式一:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml","applicationContext2.xml")
方式二:
<import resource="applicationContext.xml"></import>
五、spring注解配置
1、开启注解扫描
<context:component-scan base-package="com.jichi.entity"></context:component-scan>
扫描com.jichi.entity下的所有类中的注解。
2、在类上添加注解
@Component
public class User {
}
六、spring常用注解
1、@Componet,@Controller,@Service,@Repository四个组件注解,作用在类上。四个注解并无区别,只是为了方便区分。
2、@Scope注解,作用在类上。
@Scope(scopeName="singleton") //单例模式
public class User {
}
@Scope(scopeName="prototype") //多例模式
public class User {
}
3、@Value用于注入普通类型值
第一种方式:作用在属性上,通过反射的filed值,破坏了对象的封装性。
@Value("xiaohei")
private String name;
第二种方式:通过set方法赋值,不破坏对象的封装性。
@Value("xiaobai")
public void setName(String name) {
this.name = name;
}
4、@Autowired,@Resource,@Qualifier注解
引用类型的装配方式,详细区别请看之前的博客。
@Autowired
private Car car;
@Resource
private Car car;
5、@PostConstruct与@PreDestroy
@PostConstruct //创建对象前调用
public void init(){
System.out.println("初始");
}
@PreDestroy //对象销毁前调用
public void destory(){
System.out.println("销毁");
}
七、spring与junit整合测试
1、导入spring基础包,与aop包和test包,可从lib中找到。
2、在测试类上添加注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class TestJunit { @Resource
private User user; @Test
public void test1(){
System.out.println(user);
}
}
Spring入门详细教程(二)的更多相关文章
- spring入门详细教程(五)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(四)
前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...
- Spring入门详细教程(三)
前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...
- Spring入门详细教程(一)
一.spring概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的 ...
- ThinkJS框架入门详细教程(二)新手入门项目
一.准备工作 参考前一篇:ThinkJS框架入门详细教程(一)开发环境 安装thinkJS命令 npm install -g think-cli 监测是否安装成功 thinkjs -v 二.创建项目 ...
- 经典Spring入门基础教程详解
经典Spring入门基础教程详解 https://pan.baidu.com/s/1c016cI#list/path=%2Fsharelink2319398594-201713320584085%2F ...
- MVC5 + EF6 入门完整教程二
从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,Vie ...
- Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源
多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...
- SpringBoot入门详细教程
一.SpringBoot入门 1.SpringBoot简介 SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一 个独立 ...
随机推荐
- MODIS数据的下载(新地址)
Modis数据下载方法 1.1打开网址 浏览器输入地址:https://ladsweb.nascom.nasa.gov/search 注:需要一定的等待时间,如果一直打不开,就需要FQ.(网址加载了g ...
- 定时备份 MySQL 并上传到七牛
多数应用场景下,我们需要对重要数据进行备份.并放置到一个安全的地方,以备不时之需. 常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份).mysqldump 全量逻辑备份. ...
- MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.理解链式规则 在mysql_query_rules表中,有两个特殊 ...
- Go基础系列:Go中的方法
Go方法简介 Go中的struct结构类似于面向对象中的类.面向对象中,除了成员变量还有方法. Go中也有方法,它是一种特殊的函数,定义于struct之上(与struct关联.绑定),被称为struc ...
- MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken
前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...
- 金三银四招聘季,这些BAT以及独角兽互联网公司官方招聘网站值得关注。(个人梳理备用:附BAT以及独角兽公司官方招聘网址)
金三银四是一年当中的招聘最旺盛的时期,即招聘高峰期,在这个期间内有非常多名企巨头公司的放出大量的岗位信息.以博主几年的工作经验来看,在这期间找到称心如意的工作的几率大大提升,对于很多程序员来说,薪水高 ...
- 【微服务No.1】Consul服务发现在windows下简单使用
基本介绍: 安装: 下载地址:https://www.consul.io/downloads.html 运行: consul agent -dev 显示这个界面说明已经开启成功. 页面显示: 然后访问 ...
- Try Catch 嵌套问题
程序错误 问题描述: 在一个事物中,插入两张表数据,但是第一个成功,第二个失败了,没有起到所谓的事物的功能,这让我百思不得其解 问题所在: 本质上其实报错了,但是错误被吃掉了,具体来说,就是 try ...
- [PHP] 算法-顺时针打印矩阵的PHP实现
1.行数和列数取出来row,col,圈数就是 (较小值-1)/2+1 2.外层循环控制圈数,内层四个for循环,i 3.第一个for循环,从左到右,j=i;j<col-i;j++;j<; ...
- SpringBoot 2.0 报错: Failed to configure a DataSource: 'url' attribute is not specified and no embe
问题描述 *************************** APPLICATION FAILED TO START *************************** Description ...