zoukankan      html  css  js  c++  java
  • spring笔记二

    DI—Dependency Injection,即依赖注入:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。

    手动注入的setter注入

    根据属性的不同类型,可以分为三种注入方式:

       1)基本类型注入 

       2Spring组件类型注入

       3)集合类型注入

    代码演示:

    <bean id="boy" class="model.Boy">
        <property name="age" value="18"></property>  <!-- spring基本数据类型的注入 -->
        <property name="name" value="张三"></property>
               
        <property name="dog" ref="dog"></property>  <!-- spring bean组件的注入 -->
         
         <property name="likes" >   <!-- spring 集合类型List的注入 注意有先后顺序 -->
                 <list>
                        <value type="java.lang.String">打篮球 </value>
                        <value type="java.lang.String">踢足球 </value>
                        <!--ref bean="cat"/-->
                 </list>
           </property>
                
         <property name="likesset" >   <!-- spring 集合类型Set的注入 注意没有先后顺序 -->
                <set>
                     <value type="java.lang.String">打游戏 </value>
                     <value type="java.lang.String">聊天</value>
                      <!--ref bean="cat"/-->
                </set>
         </property>
                
        <property name="scoremap" >   <!-- spring 集合类型Map的注入 注意没有先后顺序 -->
              <map>
                   <entry key="语文" value="100"> </entry>
                   <entry key="数学" value="90"> </entry>
                   <!--entry key-ref="bean" value-ref=""></entry-->
              </map>
       </property>        
     </bean>

    使用注解配置文件

    要把spring-aop-4.1.0.RELEASE包导入项目中,这个包提供对注解的支持,如果不用注解,那就不用这个包。

    xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
         
        <context:component-scan base-package="com.chinasofti"></context:component-scan>    
    
    </beans>

    @Service:用于标注业务层组件、

    @Controller:用于标注控制层组件(如struts中的action)、

    @Repository:用于标注数据访问组件,即DAO组件。

    @Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

    @Component(value="boy")
    public class Boy {
        
        @Value(value="张三")
        private String name;
        @Value(value="10")
        private int age;
        @Resource(name="dog")
        private  Dog dog;
        Set get 方法
    
    }

    1)@Component(value="boy") 相当于把Boy加入Spring容器中,并起名叫boy

    2)@Value(value="张三") 相当于setter方式,给成员变量赋值为张三

    3)@Resource(name="dog")相当于

      <bean id = "boy" class="com.chinasofti.Boy">

          <property name="dog" ref="dog"></property>

       </bean>

    总结:注解使用可以代替配置文件,不过,这种注解的方式不适合应用在大项目中,因为@Component(value="boy")boy有可能会相同。

    Log4J用法:

    1)导入log4j-1.2.8.jar
    放在WebRoot->WEB-INF->lib中,切记,要把它加载到项目中(Build path)


    2)在src目录下新建一个log4j.properties文件,此文件的功能是,设置出错信息录入方式

    log4j.rootLogger=INFO,BB
    
    log4j.appender.BB=org.apache.log4j.FileAppender
    log4j.appender.BB.File=D:\test.log
    log4j.appender.BB.layout=org.apache.log4j.PatternLayout
    log4j.appender.BB.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

    3)创建一个类叫Log.java的类,写入public static Logger logger = Logger.getLogger(Log.class.getName()); 得到log4j的对象

    import org.apache.log4j.Logger;
    
    public class Log {   
        public static Logger logger = Logger.getLogger(Log.class.getName()); 
    }

    4)当程序出异常时,就可以在catch中使用

    public class Login4jServlet extends HttpServlet {
       
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request,response);
        }
    
        
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
           
            Log.logger.error("进入Login4jServlet模块");
            try{      
            String aa = request.getParameter("aa");
            int  count = 100/0;
            int  intaa = Integer.parseInt(aa);
            }catch(Exception e){   
                Log.logger.error(e.getMessage());
                request.setAttribute("errMsg","系统繁忙,请稍后连接");
                request.getRequestDispatcher("error.jsp").forward(request, response);      
            }      
        }
    }

    运行后会在指定位置输出log文件,可以协助调试程序错误。

  • 相关阅读:
    View转化为bitmap
    Bitmap 与Drawable相互转换
    android studio 连接不到真机
    解决Android sync无法同步问题
    Stetho管理手机
    android sugar no such table
    android 建数据库的正确写法
    android JSON 数据解析
    android notification 理解
    android aidl 简单使用
  • 原文地址:https://www.cnblogs.com/lm970585581/p/7265633.html
Copyright © 2011-2022 走看看