Spring专题

90.为什么要使用 spring?

 

91.解释一下什么是 aop?

92.解释一下什么是 ioc?

93.spring 有哪些主要模块?

 

 

 

 

1、Spring Core:主要组件是BeanFactory,创建JavaBean的工厂,使用控制反转(IOC) 模式

                       将应用程序的配置和依赖性规范与实际的应用程序代码分开。

2、Spring AOP:集成了面向切面的编程功能(AOP把一个业务流程分成几部分,例如权限检查、业务处理、日志记录,

                        每个部分单独处理,然后把它们组装成完整的业务流程。每个部分被称为切面),

                     可以将声明性事物管理集成到应用程序中。

3、Spring context:一个核心配置文件,为Spring框架提供上下文信息。

4、Spring dao:Spring操作数据库的模块。

5、Spring ORM:Spring集成了各种orm(object relationship mapping 对象关系映射)框架的模块,集成mybatis

6、Spring web:集成各种优秀的web层框架的模块(Struts、Springmvc)

7、Spring web mvc:Spring web层框架

 

94.spring 常用的注入方式有哪些?

通过配置文件中在bean上进行setter注入、构造注入、接口注入,或者在属性上直接用@Autowired,@Resource,@Qualifier注解注入

setter注入举例:

package org.jia;
  
  public class Order {
      private String orderNum;
      @SuppressWarnings("unused")
      private OrderItem orderitem;

    public Order(OrderItem item){
     orderitem = item;
    }
      public OrderItem getOrderitem() {
          return orderitem;
     }
 
     public void setOrderitem(OrderItem orderitem) {
         this.orderitem = orderitem;
     }
 
     public String getOrderNum() {
         return orderNum;
     }
 
     public void setOrderNum(String orderNum) {
         this.orderNum = orderNum;
     }     
 }

  

package org.jia;
 
 public class OrderItem {
     private String orderdec;
 
     public String getOrderdec() {
         return orderdec;
     }
 
     public void setOrderdec(String orderdec) {
         this.orderdec = orderdec;
     }
 }

  setter方式的第一种:property引入

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
 
<beans>
    <bean id="orderItem" class="org.jia.OrderItem">
        <property name="orderdec" value="item00001"></property>
    </bean>
    <bean id="order" class="org.jia.Order" >
        <!-----注入变量 名字必须与类中的名字一样------->
        <property name="orderNum" value="order000007"></property>
         <!--注入对象 名字为orderitem,所属的类的应用id为orderItem-->
        <property name="orderitem" ref="orderItem"></property>
    
    --></bean>
</beans>

  setter方式的第二种:byName

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!--此时的id就必须与Order.java中所定义的OrderItem的对象名称一样了,不然就会找不到-->
    <bean id="orderitem" class="org.jia.OrderItem">
        <property name="orderdec" value="item00001"></property>
    </bean>
    <bean id="order" class="org.jia.Order" autowire="byName">
        <property name="orderNum" value="order000007"></property>
    </bean>
</beans>

  setter方式的第二种:byType

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!--按照byType注入则就与id没有关系,可以随便定义id !!!但是不能出现多个此类的id-->
    <bean id="orderitdfadafaem" class="org.jia.OrderItem">
        <property name="orderdec" value="item00001"></property>
    </bean>
    <bean id="order" class="org.jia.Order" autowire="byType">
        <property name="orderNum" value="order000007"></property>
    </bean>
</beans>

  构造注入举例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="orderItem" class="org.jia.OrderItem">
        <property name="orderdec" value="item00001"></property>
    </bean>
    <bean id="order" class="org.jia.Order" autowire="constructor">
        <property name="orderNum" value="order000007"></property>
    </bean>
</beans>

  注解注入举例:

@Autowired自动注入,从spring上下文找到合适的bean注入,按类型匹配注入

@Autowired
private UserDao userDao;

@Resource默认按照名称匹配注入bean,name属性如果没有,按照属性名或方法名去查找bean注入

@Resource(name = "userServiceImpl")
 private UserService userService;

@Qualifier跟@Resource类似,指定注入的bean名称

 @Autowired
 @Qualifier("userServiceImp")
 private UserSerevice userService;

@Service,@Controller,@Repository,@Component分别标记在service层,controller层,dao层,不确定的层上,是实现类上,不是接口,spring扫描到带有这些注解的类,会自动生成bean,类似于在bean中配置bean

 

95.spring 中的 bean 是线程安全的吗?

96.spring 支持几种 bean 的作用域?

 

97.spring 自动装配 bean 有哪些方式?

setter注入方式——no(ref)装配autowire="no",byName装配autowire="byName",byType装配autowire="byType"

构造注入方式——构造装配 autowire="constructor"

 

98.spring 事务实现方式有哪些?

@Transactional

 

99.说一下 spring 的事务隔离?

100.说一下 spring mvc 运行流程?

 

1.浏览器发送请求到DispatcherServlet;

2.DispatcherServlet调用HandlerMapping处理器映射器根据url和自定义配置(xml、接口方式、注解方式)查找一些Handler拦截器,生成处理器执行链HandlerExecutionChain;

3.通过HandlerAdapter处理器适配器执行Handler

4.Handler处理器执行完成返回ModelAndView给DispatchServlet,ModelAndView包含视图逻辑名和模型数据信息。

5.ViewReslover视图解析器将逻辑视图ModeAndView解析为真实视图view

6.对view进行渲染处理结果展示在页面

 

 

 

 

 

 

 

 

 

 

 

101.spring mvc 有哪些组件?

102.@RequestMapping 的作用是什么?

103.@Autowired 的作用是什么?

 

104.spring常用的注解?

 

posted @ 2021-02-05 15:32  三灶龙都88  阅读(62)  评论(0)    收藏  举报