漠北空城

听海观潮


  • 首页

  • 关于

  • 标签

  • 归档

  • 搜索

Spring IOC产生对象的生命周期

发表于 2017-11-20

Spring IOC产生对象的生命周期

1、HelloWorld在默认的配置情况下是单例的。
验证过程:1、创建HelloWorld类
2、把该类放入到spring容器中
3、启动调用

将来在做项目的时候,会把service层和dao层所有的类放入到spring容器中,service层所有的类和dao层所有的类都是单例的,不能一个对象放在属性上(因为是共享的)

2、多例,需要配置scope

1
<bean id="helloWorld" class="..." scope="prototype"></bean>

singleton:单例(默认)
prototype:多例
request:每一次HTTP请求产生一个新的bean,同时该bean仅在当前HTTP request内有效
session:每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
global session:每一次HTTP请求都会产生一个新的bean,同时该bean全局HTTP session内有效

singleton:
返回单例的对象,只会初始化一次

prototype:
每次都会new一个对象返回,也就是多例的,另外对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就对该prototype实例不闻不问了。不管何种作用域,容器都会调用所有对象的初始化生命周期回调方法,而对prototype而言,任何配置好的析构生命周期回调方法都将不会被调用。 清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一种可行方式是,通过使用 bean的后置处理器,该处理器持有要被清除的bean的引用。)

singleton和prototype二者选择的原则:有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。

因为stuts2中的action是多例的,所以将来struts2中的action要放入spring容器中也是多例的

Spring IOC创建对象的方法

发表于 2017-09-26

Spring IOC创建对象的方法

1、默认的构造器函数

在默认的配置情况下,spring容器是利用默认的构造器给类创建对象的

2、静态工厂模式

1
2
3
4
5
6
7
8
9
10
11
12
// 步骤:
// 1、静态工厂

public class HelloWorldFactory {

public static HelloWorld getInstance(){
return new HelloWorld();
}
}
// 2、提供一个HelloWorld类
// 3、在spring的配置文件中进行配置
<bean id="helloWorldCreateByStaticFactory" class="com.yc.spring.ioc.HelloWorldFactory" factory-method="getInstance" />

spring容器做的事:调用静态工厂方法创建对象,但是创建对象的方法的代码在工厂方法中

3、实例工厂模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 步骤
// 1、创建实例工厂类

public class HelloWorldFactory {

public HelloWorld getInstance(){
return new HelloWorld();
}
}
// 2、提供一个HelloWorld类
// 3、在spring的配置文件中进行配置
<!-- 配置实例工厂-->
<bean id="helloWorldFactory" class="com.yc.spring.ioc.HelloWorld2Factory" />
<!--
配置helloWorld3
factory-bean:指向了实例工厂
factory-method:指向了实例的工厂方法
-->
<bean id="helloWorld3" factory-bean="helloWorldFactory" factory-method="getInstance"/>

Spring IOC创建对象

发表于 2017-09-26

1、简介

Spring 是一个非常活跃的开源框架,它是一个基于core来架构多层Java EE系统的框架,它的主要目地是简化企业开发
Spring以一种非侵入式的方式来管理你的代码,Spring提倡”最少侵入”,这也就意味着你可以适当的时候安装或卸载Spring

Spring的控制反转(IOC):把对象的创建、初始化/销毁等工作交给spring容器来做,由spring容器控制对象的生命周期。
意义:对象的创建交给Spring容器来做,对于程序员来说,不用操心该对象是怎么样创建出来的。

2、创建对象

2.1、一般方式创建对象

1、创建一个HelloWorld类
2、把java类编译成class文件
3、把class文件加载到jvm中
4、运行,调用方法

通过new的方式创建对象并调用对象的方法

2.2、spring方式创建对象

1、创建一个HelloWorld类
2、以配置文件的形式吧HelloWorld类放入spring容器中
3、启动spring容器
4、从spring容器中把对象提取出来
5、对象调用方法

首先pom.xml文件中引入以下依赖:

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>

创建HelloWorld类,里面定义一个hello()方法,打印出hello

编写applicationContext.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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-3.0.xsd">
<!--
把一个类放入到spring容器中,该类为一个bean
beans说明可以配置多个类
-->
<!--
bean代表helloWorld
id 标示符 书写规范:类的第一个字母变成小写
class 表示类的全名
-->
<bean id="helloWorld" class="com.yc.spring.ioc.HelloWorld"></bean>

<!-- 别名alias与id一样唯一标识一个bean -->
<alias name="helloWorld" alias="helloworldAliasName"/>
</beans>

测试类编写,并成功输出结果

1
2
3
4
5
6
7
8
9
10
@SuppressWarnings("resource")
@Test
public void testHelloWorld(){

// 启动了spring容器,创建对象
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
// 获取helloWorld bean 实例
HelloWorld instance = (HelloWorld) applicationContext.getBean("helloWorld");
instance.hello();
}

ApplicationContext主要结构:
ApplicationContext:容器顶级接口
ConfigurableApplicationContext:可配置spring容器
ClassPathXmlApplicationContext:从claspath环境中加载配置文件
FileSystemXmlApplicationContext:从文件系统中加载配置文件
WebApplicationContext:web spring容器

Spring boot 整合Dubbo

发表于 2017-05-22

Spring boot 整合Dubbo

Spring boot 整合Dubbo

环境

  • Spring boot:1.5.3.RELEASE
  • zookeeper:3.4.10
  • dubbo:2.5.3
1
2
3
4
5
6
7
8
9
10
11
12
-
+----------------+
|dubbo-interface |
+----------------+
|
|
+------++------+------++------+
| |
| |
+----------------+ +----------------+
| dubbo-provider | | dubbo-comsumer |
+----------------+ +----------------+
阅读全文 »

zookeeper 分布式集群安装

发表于 2017-05-21

zookeeper 集群安装

zookeeper 集群安装

本次搭建,将会搭建基本的zookeeper集群,三台,(要求3+,且必须是奇数,因为zookeeper的选举算法)

1
2
3
4
5
6
7
8
9
10
11
12
架构图:
+--------+
| leader |
+--------+
|
|
+----+----+----+----+
| |
| |
+----------+ +----------+
| follow 1 | | follow 2 |
+----------+ +----------+
IP 端口 模式 领导端口 选举端口
192.168.10.242 2181 leader 28881 38881
192.168.10.242 2182 follow 28882 38882
192.168.10.242 2183 follow 28883 38883
阅读全文 »
1…456…14
漠北空城

漠北空城

69 日志
19 标签
链接
  • xyz327
© 2024 漠北空城
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
粤ICP备18054530号-2   |     |