创立我的项目

一、

      任何我的项目都得有一个启动入口,在springboot的启动类中,须要应用@SpringBootApplication 注解进行形容,并且在类中会有一个main办法,main办法运行时会读取配置文件,并加载指定资源,而后进行性初始化操作。
package cn.wl;import java.util.Arrays;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;// 启动项@SpringBootApplicationpublic class WlSpringboot1Application implements CommandLineRunner {    public static void main(String[] args) {        /* mian办法由jvm调用         * args jvm运行时给main办法传值111 222 333         * run(将args中的参数传给了SpringBoot)而后再传递给run()办法中的         * args         * */         SpringApplication.run(WlSpringboot1Application.class, args);        System.out.println("WlSpringboot1Application.main()");        System.out.println("main.args=" + Arrays.toString(args));    }    /* 在此办法中能够获取Spring容器的一些初始化资源 */    @Override    public void run(String... args) throws Exception {        System.out.println("run.args=" + Arrays.toString(args));    }}

二、

  • 在SpringBoot工程中如何将一个类的实例交给spring创立和治理
  • 1.将类放在启动包所在的包或者子类包

  • 2.将类应用spring框架指定注解进行形容,@Component
  • @Component是Spring中用于形容Bean类的一个注解。
  • 用于通知Spring这个类的实例由Spring创立,
  • 当此对象由Spring创立和治理时,默认会将对象存储到池(Bean池)中。
@Componentpublic class DefaultTest {}

三、

  • 1.Springboot我的项目中配置起源?
  • 2.springboot我的项目中的资源加载?(资源能够了解为咱们的class文件)
  • JDK类文件 Spring类文件 本人定义的类文件
  • 3.SpringBoot中的我的项目资源初始化?
  • a.构建实例对象 b.基于对象存储数据
  • 跟踪类加载:-XX:+TranceClassLoading
@SpringBootTestpublic class DefaultCacheTests {    @Autowired    private DefaultCache defaultCache;    @Test    public void testDefault() {        System.out.println(defaultCache);    }

四、

NoSuchBean Spring容器中没有这个Bean

  • 1.类的包是否在启动包或启动包的子包
  • 2.类是否应用了Spring的特定注解

五、

  • 1.@Lazy 通知spring框架,它形容的类的实例,如果临时用不到就先不创立
  • 2.如果将此类交给spring治理,请问spring何时创立此对象?
  • 3.一个对象创立后长时间不必,在内存中会有什么影响
  • 4.Spring中Bean对象的提早加载个性
  • 5.什么场景适宜提早加载? (大对象、用的少的)
    1. @PostConstruct 形容的办法会在对象结构当前执行,即构造方法执行当前执行,用于执行初始化操作。
  • 7.@PreDestroy 注解形容办法会在(单例)对象销毁之前执行。Spring框架会销毁单例对象,但多例对象不会被销毁
    1. 默认单例作用域 singleton ,prototype每次创立实例都会新建一个新的对象

@Scope("prototype")
利用场景

  • singleton:常常应用,须要回收重要资源(数据库连贯等)的事宜配置为singleton,
  • prototype: 应用较少时 如果配置为prototype须要利用确保资源失常回收。
  • 有状态的Bean配置成singleton会引发未知问题,能够思考配置为prototype。

//提早策略@Lazy//默认单例@Scope("prototype")@Componentpublic class ObjectPool {        public ObjectPool() {        System.out.println("ObjectPool.ObjectPool()构造方法执行了");    }        @PostConstruct    public void init() {        System.out.println("ObjectPool.init()初始化");    }    @PreDestroy    public void close() {        System.out.println("ObjectPool.close()销毁");    }}
@SpringBootTestpublic class ObjectPoolTests {        @Autowired    private ObjectPool objectPool1;        @Autowired    private ObjectPool objectPool2;        @Test    public void testPool() {        System.out.println(objectPool1 == objectPool2);    }}

@Lazy为false运行启动程序,调用程序时,会主动加载@Component正文的类

@Lazy为true时,则不会

5.JVM内存参数
JVM参数: -Xms5最小堆 -Xmx5最大堆

8.
通过对下面大节的学习,能说说Spring框架治理Bean对象有什么劣势吗?(面试)
Spring框架能够为由它治理的对象(Bean)提供懒加载策略(对象临时用不到,则无需加载和实例化),作用域(例如singleton-频繁用时能够思考内存中只有一份,prototype-应用次数少时能够用时创立,不必时销毁),生命周期办法(更好实现对象的初始化和资源销毁),以实现对象对系统资源的无效应用。同时Spring框架还能够基于用户设计治理对象与对象的依赖关系,以升高对象与对象之间的间接耦合,进步程序的可维护性和可扩展性。