spring中文参考手册-核心技术_ioc

https://docs.spring.io/spring/docs/5.1.1.RELEASE/spring-framework-reference/core.html#spring-corehtml

  spring框架最重要的是ioc容器,接着是aop。而后是官方对spring的吹牛逼,这里就不翻译了。java

spring ioc 反射 核心:web

java.lang.Class

1,ioc框架spring

   1,1 spring ioc框架和beans的介绍数据库

    ioc,控制反转,也叫依赖注入{DI},定义一个过程所需的依赖项。org.springframework.beans 和 org.springframework.context是spring的基石。BeanFactory 接口提供对任何类型对象的配置管理能力。ApplicationContext是beanFactory的子接口,提供了:apache

   集成aop特征;api

       消息资源处理tomcat

      事件发布;安全

       应用层上下文app

2, spring bean

 通俗话说就是 根据java 反射机制,由spring ioc容器 根据对象名实例化对象。ioc中的bean,必须有无参构造

  对象的实例化,须要关注对象的元数据一下3个信息

  a,如何建立一个bean;

  b,bean的生命周期的详细信息;

 c,bean的依赖关系;

上述全部的配置元数据转换成一组构成每一个 bean 定义的下列属性。

属性 描述
class 这个属性是强制性的,而且指定用来建立 bean 的 bean 类。
name 这个属性指定惟一的 bean 标识符。在基于 XML 的配置元数据中,你可使用 ID 和/或 name 属性来指定 bean 标识符。
scope 这个属性指定由特定的 bean 定义建立的对象的做用域,它将会在 bean 做用域的章节中进行讨论。
constructor-arg 它是用来注入依赖关系的,按照构造体方式赋值
properties 它是用来注入依赖关系的,对象的属性。
autowiring mode 它是用来注入依赖关系的,自动装配,只适用于ref
lazy-initialization mode 延迟初始化的 bean 告诉 IoC 容器在它第一次被请求时,而不是在启动时去建立一个 bean 实例。
initialization 方法 在 bean 的全部必需的属性被容器设置以后,调用回调方法。它将会在 bean 的生命周期章节中进行讨论。
destruction 方法 当包含该 bean 的容器被销毁时,使用回调方法。它将会在 bean 的生命周期章节中进行讨论。

依赖注入内容能够是:property,ref, list,set,array

proerty value="",type=int;复制属性类型是int;

赋予null

<property name="name">

    </null>

</property>

 赋予""

<property name="name">

    <value></value>

</property>

自动装配:autowire="byName|byType|byConstruct|no"

byName:

<bean id="course" class="xxx.xxx.xxx.course" autowire="byName">

</bean>

course类中有一个ref属性teacher(属性名),而且该ioc容器中刚好有一个bean的id名称同属性值,则自动装配该属性;

byName本质是byId

byType,自动寻找其它bean的类型是否与该类的属性类型一致;

byConstruct:其它bean的类型(class)  是否与 该Course类的构造方法参数 的类型一致:此种方式的本质就是ByType; 

byName,byType,byConstruct容易形成混乱,大工程不建议用.

 

使用注解配置bean:

1,在类头部加注解,申明该类须要放入容器

@Component("studentDao")

2,在application.xml扫描对应包

<--配置扫描器-->

<context:component-scan base-pacakge="com.aaa.dao">

</context:component-scan>

spring在启动的时候,会根据base-pacakge在该包中扫描全部类,查找component,加入ioc容器中;

 

@Component细化:

dao层:@Repository

service层:@Service

控制器层:@Controller

repository,service,controler三个做用和component做用是同样的,只是为了显示这个类在哪一层.

 

使用注解实现事务(声明式事务)

目标:经过事务,事务要么全成功,要么全失败;

application.xml 配置事务管理器,增长对事务的支持

<bean id="txManager" class="Data"

<tx:annotation-driven transaction-manager="txManager"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value=""></property>
        <property name="url" value=""></property>
        <property name="username" value=""></property>
        <property name="password" value=""></property>
        <property name="maxActive" value="1"></property>
        <property name="maxIdle" value="1"></property>
    </bean>

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--增长对事务的支持-->
    <tx:annotation-driven transaction-manager="transactionManager"/>

在处理数据库的dao函数前面,添加@Transaction;

事务:

只读事务:一次执行屡次查询来统计某些信息,这时为了保证数据总体的一致性,要用只读事务;

 

日志模块:

spring boot 自动继承log4j,引入maven spring boot自动引入log4j;

类引入日志例子:

private static Logger logger = LoggerFactory.getLogger(DemoApplication.class);

日志代码文件配置,配置位置:application.properties:

logging.file=logger.log

 

spring-web.jar在tomcat启动时,经过监听器把IOC容器启动,并把context传过去.

web.xml

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

拆分配置多个applicationContext:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml,
        /WEB-INF/applicationContext_service.xml,
        /WEB-INF/applicationContext_controller.xml,
        /WEB-INF/applicationContext-*.xml,</param-value>
</context-param>

spring  页面安全认证:

https://spring.io/guides/gs/securing-web/

http://blog.didispace.com/Spring-Boot%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/

相关文章
相关标签/搜索