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>
总结:注解利用可以取代设置装备摆设文件,不外,这种注解的体式格局不适合应用在年夜项目中,[email protected](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文件,可以协助调试法式错误。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11699.html