spring笔记二
DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。
手动注入的setter注入
根据属性的不同类型,可以分为三种注入方式:
1)基本类型注入
2)Spring组件类型注入
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文件,可以协助调试程序错误。
最新文章
- 微信小程序常见问题集合(长期更新)
- 8-05分支结构CASE..END
- Visual Studio+TFS--强大的项目管理工具
- 如何建立一个完整的游戏AI
- BZOJ 3827: [Poi2014]Around the world
- UVALive 7267	Mysterious Antiques in Sackler Museum (判断长方形)
- Qemu文档
- ASP.NET 经典60道面试题
- 注入攻击-SQL注入和代码注入
- nginx-301重定向开始
- TCP的拥塞控制(转载)
- 【Eclipse】WebServiceExplorer
- [Machine Learning (Andrew NG courses)]IV.Linear Regression with Multiple Variables
- Java中取某一个范围的随机数
- 又一次认识HTML,CSS,Javascript 之node-webkit 初探
- zookeeper curator处理会话过期session expired
- Kafka+Zookeeper集群搭建
- kubernetes入门(05)kubernetes的核心概念(2)
- PHP实现部分字符隐藏
- 质量:“PM,你怎么可以放弃我?!”