Spring 配置
spring作为一种框架,里边有许多不同的配置,这里重点讲解三种配置:别名配置,Bean配置,Import配置
别名配置
<!--参数名-->
<bean id="main" class="com.xh.Main">
<constructor-arg name="user" value="小黑"/>
</bean>
<!-- alias 起别名 name 是 Main main = (Main) context.getBean("main"); -->
<alias name="main" alias="yl"/>
alias 为spring起别名的关键字,在xml文件中通过alias给第一个 id = “main” 起个别名为 yl
如上所示.
//通过别名
Main main = (Main) context.getBean("yl");
//传统方式
Main main1 = (Main) context.getBean("main");
Bean配置
实际上就是指向实体类里边
<bean id="userT" class="com.xh.UserT" name="user2,u2 u3;u4">
<property name="user" value="小黑"/>
</bean>
<!-- // 别名可控制 UserT userT = (UserT) context.getBean("u2");-->
Import一般用于团队开发,将多个模块导程一个
// ApplicationContext context= new ClassPathXmlApplicationContext("application.xml");
application.xml
<import resource="bean.xml"/>
<import resource="bean2.xml"/>
<import resource="bean1.xml"/>
无需担心重名他会自己选择。
DI依赖注入
注入方式:这里我们讲解三种 构造器注入,set方法注入,拓展
构造器注入
也就是我们常用的有参构造和无参构造
Set方式注入【重点】
依赖注入:set注入
依赖: bean对象的创建依赖于容器
注入: bean对象中的所有属性由容器注入
public class Address {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
private String name;
private Address address;
private String[] books;
private List<String> hobby;
private Map<String,String> card;
private Set<String> games;
private String wife;
private Properties info;
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="student" class="com.xh.Student">
<!--第一种普通值注入 value-->
<property name="name" value="小黑"/>
</bean>
</beans>
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Student student = (Student) context.getBean("student");
System.out.println(student.getName());
}
拓展方式注入
我们可以通过p命名空间注入
<?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:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- p set 命名空间注入,可以简介注入 : property-->
<bean id="user" class="com.xh.User" p:uname="小黑" p:age="18">
</bean>
<!-- C命名空间必须通过构造器注入才行 有参无参构造 construct-args 注入 -->
<bean id="user2" class="com.xh.User" c:age="18" c:uname="颜*"/>
</beans>
P:
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
Student student = (Student) context.getBean("student");
//System.out.println(student.getName());
System.out.println(student.toString());
C:
@Test
public void test(){
ApplicationContext context = new
ClassPathXmlApplicationContext("userBean.xml");
User user = context.getBean("user2", User.class);
System.out.println(user);
}
注意: p:命名空间使用Set方式注入,而C:命名空间是使用构造器注入,有参构造,无参构造都要有,且p,c都需要导入依赖才能使用,不能直接使用
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
拓展一下:
spring里边我们可以配置单例和原型模式,这是自带的:
单例模式:(Spring默认机制)
<bean id="user3" class="com.xh.User" c:age="18" c:uname="颜*" scope="singleton"/>
原型模式:每次从容器中get的时候都会产生一个新对象
<bean id="user4" class="com.xh.User" c:age="18" c:uname="颜*" scope="prototype"/>
其余的request ,session,application这些只能在web开发中使用!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/197980.html