单例:Service、DAO、SqlSessionFactory(或者是所有的工厂)
多例:Connection、SqlSession、ShoppongCart
scope="singleton" 默认的 描述当前对象是单例 拿对象多少次都那同一个对象 scope="prototype" 表示多例 每次调用工厂,都会创建新的对象。 scope="request" 表示每个请求只创建一个对象实例 scope="session" 表示每个session创建一个对象实例 scope="globalSession" 表示portlet 里面的session



isSingleton方法:表示是否单例
- public class ConnectionFactoryBean implements FactoryBean
{ - private Connection connection =null;
-
- public Connection getObject() throws Exception {
-
- Class.forName("com.mysql.jdbc.Driver");
-
- connection = DriverManager.getConnection("jdbc:mysql:///crm", "root", "123456");
-
- return connection;
- }
-
-
- public Class> getObjectType() {
- return null;
- }
-
-
- public boolean isSingleton() {
- return false;
- }
- }

一般来说,创建对象时
但是特例

如果要获取ConnectionFactroyBean对象,在conn前加&
饿汉式创建优势
工厂创建后,会将Spring配置文件中的所有对象都创建完成(饿汉式)
提高程序运行效率。避免多次IO,减少对象创建时间。(概念接近连接池,一次性创建好,使用时直接获取)
生命周期方法
自定义初始化方法:添加“init-method”属性,Spring则会在创建对象之后,调用此方法。
自定义销毁方法:添加“destroy-method”属性,Spring则会在销毁对象之前,调用此方法。
销毁:工厂的close()方法被调用之后,Spring会毁掉所有已创建的单例对象。
分类:Singleton对象由Spring容器销毁、Prototype对象由JVM销毁。

- public class User {
-
- private Integer id;
- private String name;
- private Integer age;
- private String gender;
-
- public User(){
- System.out.println("构造方法执行了");
- }
-
- public User(Integer id, String name, Integer age, String gender) {
- this.id = id;
- this.name = name;
- this.age = age;
- this.gender = gender;
- }
-
- public void init (){
- System.out.println("对象初始化了");
- }
-
- public void destroy(){
- System.out.println("对象销毁了");
- }
- }




