Spring框架

Spring框架 

学什么:                 IOC(控制反转)                         DI(依赖注入)                AOP(面向切面编程){事物处理}

Spring是?  作用? 入门案例  注解开发

                  是:多个框架技术的统称,每个具体的技术都可以完成不同的功能

               作用:1.可以简化代码开发;

                          2.可以将代码中创建对象的行为进行控制反转,从而解决代码的耦合度

                          3.可以自动管理对象与对象之间的依赖关系;(对于对象来说,就是依赖注入)     

                         SpringFramework框架是:其他功能的基础;使用的回收需要导入Spring-context的坐标,并创建IOC容器; 

   核心容器IOC: 中文名叫控制反转,就是程序中所有创建对象的行为,不能再使用关键字new创建对象了,

                            统一交给Spring的ioc容器负责创建对象并保存对象,当我们的程序中需要使用到具体某个对象的时候,

                            直接ioc容器中获取对象即可;(ioc容器相当于是一个map集合)      

         入门案例: 1.导入Spring-context的坐标;

                            2.编写Spring的核心配置文件,并指定哪些类需要交给Spring管理;

                            3.编写测试的接口具体的实现类

                            4.编写测试类,从ioc容器中获取对象并使用; 

                             Spring框架_第1张图片

                             Spring框架_第2张图片

                              Spring框架_第3张图片   

                                Spring框架_第4张图片

                                 Spring框架_第5张图片

 

四、 DI中文意思是:依赖注入,就是当某个对象的成员变量位置,需要其他的对象或数据的时候,可以让Spring自动的给

                                这个成员变量注入值;

                                如果是:简单类型,使用value

                                如果是:自定义引用数据类型,使用ref,ref的值是和Spring管理的某个bean的id一致;

                               Spring框架_第6张图片

                                Spring框架_第7张图片  Spring框架_第8张图片

 有关配置文件的配置介绍:

                                        bean的name属性:可以给同一个对象,起多个名字,以便于通过多种方式获取该对象;

                                        bean的scope可以控制该对象是单列还是非单列的

                                                                scope="prototype"原型,非单利的,每创建一个对象开辟一个空间

                                                                scope="singleton"单列,spring默认的是单利的

                                 

                                         自动装配意思:告诉spring,某个中的成员变量,让spring自动把注入进去;

                                                                 代码实现:直接在bean的标签中添加一个:autowire="byType"属性即可;

                                                                                    要求被装配的bean必须唯一 !    

                   Spring框架_第9张图片

                                  依赖自动装配特征:1.自动装配用于:引用类型依赖注入,不能对简单类型进行操作

                                                                  2.使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用

                                                                  3.使用按名称装配时(byName)必须保障容器中具有指定名称的bean,

                                                                     因变量名与配置耦合,不推荐使用

                                                                  4.自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效

spring给成员变量注入集合和数组类型的数据:   

                                    Spring框架_第10张图片

                                     Spring框架_第11张图片                  

                           框架整合:MyBatis Mybatis-plus  SpringMVC   .....            

 五、 第三方资源配置管理:             

                     管理第三方bean-Druid:1.导入Druid的连接池坐标;

                                                            2.在pring的核心配置文件中,配置bean;

                                                            3.给bean中的4个成员变量注入值;

                                                            4.在测试类中通过ioc容器获取bean对象即可;       

                                                               Spring框架_第12张图片    

        1.管理DataSource连接池对象:

        2.加载properties属性文件【重点】 jdbc.properties:符号前面的吗名字相当于是map的key,可以自定义,符号后面的数据,是属于连接数据库时需要的信息,不能乱码 

                                          Spring框架_第13张图片

                      【第二步】: Spring框架_第14张图片

               使用spring加载properties配置文件:1.在spring的核心配置文件中开启(context)命名空间  

                                                                         2.在核心配置文件中,指定properties文件的路径 

                                                                            

                                                                         3.在bean标签中,所有使用value注入值的地方,都可以通过${配置文件中的key}

                                                                            获取对应的值 

                                                                         4.获取ioc,测试 ;

                                                                        【第一步】编写jdbc.properties属性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

                                                                         小技巧:如果觉得上述复制粘贴方式不好改或者容易改错,其实idea是有提示功

                                                                                       能的,注意不要选错就行了。

                                                                                       有些版本的idea没有这个提示,那么就按照上面复制粘贴的方式改,

                                                                                       改完之后可以做成live template模板,后期直接用。

                                                                

                                                                      【第二步】在applicationContext.xml中开启开启context命名空间,

                                                                                        加载dbc.properties属性文件

                                                                      【第三步】在配置连接池Bean的地方使用EL表达式获取jdbc.properties属性文件

                                                                                        中的值

                                        


    
    
    
    

                                                                        注意事项:配置不加载系统属性

                                                                                         问题:如果属性问价你中配置的不是jdbc.username,

                                                                                                    而是username=root666,那么使用${username}获取到的

                                                                                                    不是root66,而是计算机的名称。

                                                                                         原因:系统属性的优先级比我们属性文件中的高,

                                                                                                    替换了我们的username=root666。

                                                                                         解决1:换一个名称 ,例如不叫username,叫jdbc.username。

                                                                                         解决2:使用system-properties-mode="NEVER"属性表示不使用系统属性

 

                                 加载 properties文件写法标准格式:

 spring半注解开发:1.在核心配置文件中,开启注解扫描的功能 

                                Spring框架_第15张图片

                                2.在指定的包的类中添加注解:@Controller   @service  @Repository

                                   Spring框架_第16张图片

                                3.如果涉及到简单类型的数据,可以直接使用@Value("注入的值")

                                   Spring框架_第17张图片

                                4.如果涉及到引用数据类型的数据,可以直接使用@Autowired按类型自动注入;

Spring框架_第18张图片     spring提供的component三个衍生注解:

                                                               @Component:用于表现层bean定义

                                                                @service:用于业务层bean定义

                                                                @Repository:用于数据层bean定义

                                                                 Spring框架_第19张图片

 spring的纯注解开发:

                                不需要编写spring的核心配置文件, 直接通过一个配置类,替代核心配置文件文件即可;

                                1.自定义一个核心配置类,替代核心配置文件;

                                2.在指定的包中定义的类的上面添加指定的注解

                                3.在测试类中获取ioc容器的时候,使用的是AnnotationConfigApplicationContext即可;

Spring框架_第20张图片

 

 Spring框架_第21张图片

 

Spring框架_第22张图片

     注解管理单列@Scope("prototype")

                             Spring框架_第23张图片   

      生命周期     :                
 @PostConstruct  创建对象的时候,会执行带有这个注解的方法
@PreDestroy       销毁对象的时候,会执行带有这个注解的方法Spring框架_第24张图片   

 指定类型或指定名称Spring框架_第25张图片

 

注解加载properties配置文件和依赖注入

简单类型使用  @Value(数据值)   @Value(${配置文件中的key})
自定义类型    @Autowired   如果类型不唯一,可以指定按名称装配   @Qualifier("abc")// 明确的指定按名称注入,这里面的名称必须和dao中配置的名称一致
在配置类的上面通过@PropertySource({"classpath:jdbc.properties"})可以加载配置文件

 

你可能感兴趣的:(spring,java,后端)