Spring入门详细教程(二)
程序员文章站
2022-07-06 11:49:40
前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇。链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/10165538.html 一、spring注入方式 1、set方法注入 2、构造方法注入 3、p名称空间注入 4 ......
前言
本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇。链接如下:
spring入门详细教程(一)
一、spring注入方式
1、set方法注入
<bean name="user" class="com.jichi.entity.user" > <property name="name" value="小明"></property> <property name="age" value="18"></property> </bean>
2、构造方法注入
<bean name="user" class="com.jichi.entity.user" > <constructor-arg name="name" value="小红" ></constructor-arg> <constructor-arg name="age" value="50"></constructor-arg> </bean>
3、p名称空间注入
xmlns:p="http://www.springframework.org/schema/p"
<bean name="user" class="com.jichi.entity.user" p:name="小白" p:age="10"></bean>
4、spel表达式注入
<bean name="user" class="com.jichi.entity.user"> <property name="name" value="小红"></property> <property name="age" value="18"></property> </bean> <bean name="user1" class="com.jichi.entity.user"> <property name="name" value="#{user.name}"></property> <property name="age" value="#{user.age}"></property> </bean>
二、spring复杂类型注入
public class collection { public string[] arr; public list<string> list; public map<string,object> map; public properties props; public string[] getarr() { return arr; } public void setarr(string[] arr) { this.arr = arr; } public list<string> getlist() { return list; } public void setlist(list<string> list) { this.list = list; } public map<string, object> getmap() { return map; } public void setmap(map<string, object> map) { this.map = map; } public properties getprops() { return props; } public void setprops(properties props) { this.props = props; } @override public string tostring() { return "collection [arr=" + arrays.tostring(arr) + ", list=" + list + ", map=" + map + ", props=" + props + "]"; } }
1、数组类型注入
<bean name="collect" class="com.jichi.entity.collection"> <property name="arr"> <array> <value>xiaohei</value> <value>xiaobai</value> </array> </property> </bean>
2、list类型注入
<bean name="collect" class="com.jichi.entity.collection"> <property name="list"> <list> <value>xiaohei</value> <value>xiaobai</value> </list> </property> </bean>
3、map类型注入
<bean name="collect" class="com.jichi.entity.collection"> <property name="map"> <map> <entry key="name" value="xiaohei"></entry> <entry key="age" value="18"></entry> </map> </property> </bean>
4、properties类型注入
<bean name="collect" class="com.jichi.entity.collection"> <property name="props"> <props> <prop key="name">xiaohei</prop> <prop key="age">18</prop> </props> </property> </bean>
三、配置spring随web项目启动初始化
在web.xml中配置。
<listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener>
<context-param> <param-name>contextconfiglocation</param-name> <param-value>classpath:applicationcontext.xml</param-value> </context-param>
四、spring的分配置文件
方式一:
applicationcontext applicationcontext = new classpathxmlapplicationcontext("applicationcontext1.xml","applicationcontext2.xml")
方式二:
<import resource="applicationcontext.xml"></import>
五、spring注解配置
1、开启注解扫描
<context:component-scan base-package="com.jichi.entity"></context:component-scan>
扫描com.jichi.entity下的所有类中的注解。
2、在类上添加注解
@component public class user { }
六、spring常用注解
1、@componet,@controller,@service,@repository四个组件注解,作用在类上。四个注解并无区别,只是为了方便区分。
2、@scope注解,作用在类上。
@scope(scopename="singleton") //单例模式 public class user { }
@scope(scopename="prototype") //多例模式 public class user { }
3、@value用于注入普通类型值
第一种方式:作用在属性上,通过反射的filed值,破坏了对象的封装性。
@value("xiaohei") private string name;
第二种方式:通过set方法赋值,不破坏对象的封装性。
@value("xiaobai") public void setname(string name) { this.name = name; }
4、@autowired,@resource,@qualifier注解
引用类型的装配方式,详细区别请看之前的博客。
@autowired private car car;
@resource private car car;
5、@postconstruct与@predestroy
@postconstruct //创建对象前调用 public void init(){ system.out.println("初始"); } @predestroy //对象销毁前调用 public void destory(){ system.out.println("销毁"); }
上一篇: JavaScript 系列博客(五)
下一篇: Winform窗体