spring笔记二

2020-09-03 11:17:25 浏览数 (1)

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

手动注入的setter注入

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

1)基本类型注入

2)Spring组件类型注入

3)集合类型注入

代码演示:

代码语言:javascript复制
<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:

代码语言:javascript复制
<?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:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

代码语言:javascript复制
@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文件,此文件的功能是,设置出错信息录入方式

代码语言:javascript复制
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的对象

代码语言:javascript复制
import org.apache.log4j.Logger;

public class Log {   
    public static Logger logger = Logger.getLogger(Log.class.getName()); 
}

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

代码语言:javascript复制
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文件,可以协助调试程序错误。

0 人点赞