Java,
Java,
1. Cookie和Session的区别
a.Cookie的数据是存放在客户端的浏览器中,Session的数据是存放在服务器中
b.Cookie是不安全的,应为他对用户是可见的,别人可以分析本地的Cookie并利用存在本地的Cookie进行欺骗,从安全性的角度考虑,首选Session
c.Session会在一定时间内存在服务器中,如果用户量访问过大会给服务器造成较大的压力,所有从性能上考虑首先Cookie
d.单个Cookie在客户端存放的数据不能超过4k,大部分浏览器都限制一个站点最多保存20个Cookie
Spring部分
1.Spring用到了哪些设计模式
第一种:简单工厂模式(静态工厂模式)
第二种:工厂方法(Factory Method)
第三种:单例模式(singleton)
第四种:适配器(Adapter)
第五种:包装器(Decorator)
第六种::代理模式(Proxy)
第七种:观察者模式(Observer)
第八种:策略模式(Strategy)
第九种:模板模式(Template Method)
第一种:简单工厂模式(静态工厂模式) (非23种设计模式中的一种)
Spring中的BesnFactory就是一个简单工厂模式的体现,根据传入的一个唯一标识来获取一个bean对象,但是否是在传入参数之前创建还是之后创建要根据具体情况来定。如下配置就是在Hello类中创建一个itBean。
<beans>
<bean id ="singletonBean" calss="com.it.Hello">
<constructor-arg>
<value>
Hello this is singletonBean!!
<value>
<constructor-arg>
<bean>
<bean id="itxxzBean" class="com.itxxz.HelloItxxz" singleton="false">
<constructor-arg>
<value>Hello! 这是itxxzBean! value>
</constructor-arg>
</bean>
</beans>
<beans>
实现原理:
- bean容器阶段
- 读取配置bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象
- 然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中,保从到他的一个ConcurrentHashMapp中
- 将BeanDefinition注册到beanFactoryPostProcessor在此处插入我们定义的代码典型的例子就是:PropertyPlaceholderConfigurer,我们一般在配置数据库的dataSource时使用到的占位符的值,就是它注入进去的。
- 容器中bean的实例化对象
- 实例化对象主要是通过反射或者是CGLIB对bean进行实例化,在这个阶段Spring又给我们暴露了很多的扩展点:
- 各种的Aware接口,比如 BeanFactoryAware,对于实现了这些Aware接口的bean,在实例化bean时Spring会帮我们注入对应的BeanFactory的实例。
- BeanPostProcessor接口,实现了BeanPostProcessor接口的bean,在实例化bean时Spring会帮我们调用接口中的方法。
- InitializingBean接口,实现了InitializingBean接口的bean,在实例化bean时Spring会帮我们调用接口中的方法。
- DisposableBean接口,实现了BeanPostProcessor接口的bean,在该bean死亡时Spring会帮我们调用接口中的方法。
作者:iCoding91
来源:CSDN
原文:https://blog.csdn.net/caoxiaohong1005/article/details/80039656
第二种:工厂方法(Factory Method)
通常由应用程序直接new对象,为了将对象的创建和使用进行分离,采用工厂方法模式,即应用程序将对象的创建即初始化职责交个工厂对象。
一般情况下,应用程序有自己的工厂对象创建bean,如果将应用程序自己的工厂对象交给Spring去管理,那么Spring管理的就不是普通的bean而是工厂Bean
例如:
import java.utilRandom;
public class StaticFactory{
public static Integer createRandom(){
return new Integer(new Random().nextInt());
}
}
//建一个config.xml配置文件,将其纳入Spring容器来管理,需要factory-method指定静态方法名称
<bean id="random"
class="example.chapter3.StaticFactoryBean" factory-method="createRandom" //createRandom方法必须是static的,才能找到 scope="prototype"
/>
测试:
public static void main(String[] args) {
//调用getBean()时,返回随机数.如果没有指定factory-method,会返回StaticFactoryBean的实例,即返回工厂Bean的实例 XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("config.xml")); System.out.println("我是IT学习者创建的实例:"+factory.getBean("random").toString());
}
第三种:单例模式(singleton)
第四种:适配器(Adapter)
第五种:包装器(Decorator)
第六种::代理模式(Proxy)
第七种:观察者模式(Observer)
第八种:策略模式(Strategy)
第九种:模板模式(Template Method)
相关文章
- 暂无相关文章
用户点评