Spring – 相关配置和注入方式

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Spring – 相关配置和注入方式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!