Spring七天速成:入门必看
Posted kook小辉的进阶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring七天速成:入门必看相关的知识,希望对你有一定的参考价值。
-----持续更新Spring入门系列文章-----
如果你也喜欢Java和算法,欢迎订阅专栏共同学习交流!
你的点赞、关注、评论、是我创作的动力!
-------希望我的文章对你有所帮助--------
前言: 在前篇文章当中我们已经大概了解了Spring的基本原理和简单实例的编写测试,那么本篇将对Spring对于Bean的管理开展进一步的讲解和运用。
目录
一、什么是Bean?
Bean是在Spring中注册的Java类,可以看做是添加到Spring容器里的一个管理对象。只有通过将Java类注册为其中的一个Bean时,也即是getBean()过程,才能使得Spring对其进行下一步管理。
1.1 Bean的配置
属性 | 描述 |
id | 即Bean对应的唯一标识符 |
name | 可以有多个名称,用逗号隔开,即代表Bean的内涵或作用 |
class | 即具体实现类,一般为对象的全路径 |
scope | Bean实例的作用范围,如singleton、prototype、request、session |
1.2 Bean的常用子元素
元素 | 描述 |
<constructor-arg> |
|
<property> |
|
<value> | 即上述两种注入方式对应的子元素的属性参数的赋值 |
<ref> | (同上) |
二、实例工厂实例化
工厂实例化,实际上也是将工厂类做为一个Bean注册到Spring容器中,通过控制工厂类来实现对于实例的创建,接下来演示一个实例工厂实例,可以让我们更好的了解工厂模式在Spring中的运作规。
2.1 引入pom依赖
代码略
2.2 创建一个类
package com.itheima;
public class Bean1
public Bean1()
System.out.println("这是Bean1!");
2.3 创建工厂
创建一个工厂,构造方法显示当前实例正在生成,以及创建一个生成类的方法
package com.itheima;
public class MyBeanFactory
public MyBeanFactory()
System.out.println("bean工厂实例化中!");
public Bean1 createBean()
return new Bean1();
2.4 配置applicationContext
注意此处将工厂类注册为一个Bean,填写其class后,将再次把工厂类作为一个Bean,使用factory-bean来标明工厂类,且已factory-method标明工厂方法。
<?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.xsd">
<bean id="MybeanFactory" class="com.itheima.MyBeanFactory"></bean>
<bean id="bean1" factory-bean="MybeanFactory" factory-method="createBean">
</bean>
</beans>
2.5 工厂实例的测试类
使用ApplicationContext作为Spring的容器,将注册的Bean注入,再通过获取Bean来实例化工厂类,以及自动实现工厂方法。
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test
public static void main(String args[])
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationBean1.xml");
System.out.println(applicationContext.getBean("bean1"));
2.6 测试结果
三、Bean的作用域
作用域 | 描述 |
singleton | 即单例模式,实际只创建一个实例 |
prototype | 即原型模式,每次请求都产生一个新的实例 |
request | 作用于Web,每一个HTTP请求都会有实例 |
session | 作用于Web,每一个HTTPSessioon请求都会有一个实例 |
global session | 作用于Web,限定为HTTPSession的生命周期 |
四、装配方式
4.1 基于XML的setter的注入
即上文中提到的setXX()以及getXX()的方法来进行赋值的方法,较为容易理解。
4.2 基于XML的构造方法的注入
即通过构造方法来对类中的成员变量进行直接的赋值的方法。
4.3 基于注解的装配
当一个项目的Bean过多时,通过XML的装配方式,会使得applicationContext文件中内容较为臃肿,那么此时就可以用到注解来解决相关问题。
以下是常用注解:
注解 | 描述 |
@Component | 即一个普通Bean,作用于任何层次 |
@Controller | 即控制组件Bean,用于控制层 |
@Service | 即业务逻辑Bean,用于业务层 |
@Repository | 即数据访问Bean,用于数据访问层 |
@Scope | 即Bean实例的作用域 |
@Value | 即Bean实例的注入值 |
@Autowired | 指自动装配对象 |
@Resource | 指要注入的对象 |
@PostConstruct | 指实例初始化完成之后调用的方法 |
@Qualifier | 自动装配的对象名称,通常与@Autowired联用 |
@PreDestory | 指实例销毁前调用的方法 |
五、注解实例
结构图:
5.1 编写基本类
package com.itheima.entity;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component("user")
@Scope("singleton")
public class User
@Value("1")
private int id;
@Value("Zhuang San")
private String name;
@Value("1234")
private String password;
public int getId()
return id;
public void setId(int id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
public void setPassword(String password)
this.password = password;
public String getPassword()
return password;
@Override
public String toString()
return "User" +
"id=" + id +
", name='" + name + '\\'' +
", password='" + password + '\\'' +
'';
5.2 编写Dao层接口
package com.itheima.Dao;
public interface UserDao
public void save();
5.3 编写Dao层实现类
package com.itheima.Dao;
import com.itheima.entity.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Repository;
@Repository("userDao")
public class UserDaoImpl implements UserDao
public void save()
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext2.xml");
User user=(User) applicationContext.getBean("user");
System.out.println(user);
System.out.println("Executing UserDaoImpl.save() ");
5.4 编写ServiceDao层
package com.itheima.Service;
public interface UserService
public void save();
5.5 编写Service实现类
package com.itheima.Service;
import javax.annotation.Resource;
import com.itheima.Dao.UserDao;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService
@Resource(name="userDao")
private UserDao userDao;
public void save()
this.userDao.save();
System.out.println("Executing UserServiceImpl.save()");
5.6 编写Controller类
package com.itheima.Controller;
import com.itheima.Service.UserService;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
@Controller
public class UserController
@Resource(name="userService")
private UserService userService;
public void save()
this.userService.save();
System.out.println("Executing UserController.save() ");
5.7 编写测试类
import com.itheima.Controller.UserController;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AnnotationText
public static void main(String args[])
ApplicationContext applicationContext= new ClassPathXmlApplicationContext("applicationContext2.xml");
UserController userController=(UserController) applicationContext.getBean("userController");
userController.save();
5.8 测试结果
六、总结
本期文章主要是关于Bean的基本装配的了解,以及基于注解实现实例的讲解,对于Spring的运用也有更加深刻的理解,下次再见!
感谢爱学习的你看到了最后,点个赞、关注支持一下吧!
《LoadRunner12七天速成宝典》来了
看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果。如果非要说第四本书的感受,那么心态上最大的区别是我不用写一本书来证明自己的技术了,而只是为了写一些观念和思想。熟悉我的朋友都知道我还是比较IN的,不太喜欢用技术去解释技术,而以前写的书总是逃不了这个套路,直到我接触了百度阅读这个平台,有了个让我随心写作的平台,而生命中那些梗也在这一刻开始蠢蠢欲动。
写一本通俗易懂的入门的书,这是我这次的目标,以前写书总是为了证明自己的技术,深怕写的东西在网上找的到,深怕把简单的鸡毛蒜皮的内容写在书里面被别人认为是灌水。但是到了现在,我觉得正确的科普可能是我更想做的事情,也是常常在各个社区及QQ群上回答小白的问题时发现的,大多数提问者都没想清楚问题到底是啥,不知道怎么提问及不知道一些基本的概念。性能测试对于任何一个初学者来说都是很难的事情,自动化测试有着非常明显的可视化及相对简单的技术基础,基本可以做到三个小时入门,三个月精通,1年毕业;而性能测试需要对功能深入理解的基础、架构体系的基础以及分析调优的思路,往往入门都要三个月的基础,而外面的资料都是零散的或者针对技术细节的,导致初学者在前进的道路上始终缺乏一个正确的大方向,在深入学习的时候举步维艰。
《LoadRunner12七天速成宝典》就是在这样的目标下编写的,通过在生活中与恋恋的互动,让整个性能测试的学习过程从技术走向生活,把晦涩难懂的概念竟可能的口语化,帮助大家在初学阶段树立正确的基本概念及思想。
随着百度阅读10W读者到到达,这本《LoadRunner12七天速成宝典》也在11月底即将与大家见面了,有很多想说的,但是也觉得没啥好说,希望读者能够喜欢。最后谢谢人邮出版社的张涛编辑,刘涛社长,以及百度阅读,给了我一个机会去把技术文章写得就像show恩爱一样,废话就不多说了,接着请阅读章节连载和精彩书评吧。签售预定即将开始。
以上是关于Spring七天速成:入门必看的主要内容,如果未能解决你的问题,请参考以下文章