Spring注入方式

    科技2022-08-09  120

    Spring注入方式

    1、建立文件

    1.1、cat类

    public class Cat { public void shout() { System.out.println("miaomiaomiao~"); } }

    1.2、dog类

    public class Dog { public void shout() { System.out.println("wangwangwang~"); } }

    1.3、Person类

    public class Person { private Dog dog; private Cat cat; private String name; Person(){ } Person(String name){ this.name = name; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } public String getName() { return name; } public void setName(String name) { this.name = name; } }

    1.4、MyTest类客户端代码

    public class MyTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); Person person = context.getBean("person", Person.class); person.getCat().shout(); person.getDog().shout(); } }

    1.5、ApplicationContext.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:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dog" class="com.bubaiwantong.CP.Dog"/> <bean id="cat" class="com.bubaiwantong.CP.Cat"/> <!--1、传统方式注入--> <bean id="person" class="com.bubaiwantong.CP.Person"> <property name="name" value="小明"/> <property name="cat" ref="cat"/> <property name="dog" ref="dog"/> </bean> </beans>

    2、C命名空间注入

    这里的C代表的Constructor,比一般的注入少许多代码。

    <?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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dog" class="com.bubaiwantong.CP.Dog"/> <bean id="cat" class="com.bubaiwantong.CP.Cat"/> <!--2、c命名空间注入--> <bean id="person" class="com.bubaiwantong.CP.Person" c:name="小明"/> </beans>

    3、P命名空间注入

    这里的P是Properties的简写,和C命名空间类似,这俩这种方式都是为了简化代码。

    <?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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dog" class="com.bubaiwantong.CP.Dog"/> <bean id="cat" class="com.bubaiwantong.CP.Cat"/> <!--2、p命名空间注入--> <bean id="person" class="com.bubaiwantong.CP.Person" p:name="小明" p:cat-ref="cat" p:dog-ref="dog"></bean> </beans>

    4、autowired的自动注入

    4.1、ByName注入

    <?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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dog" class="com.bubaiwantong.CP.Dog"/> <bean id="cat" class="com.bubaiwantong.CP.Cat"/> <!--autowired注入,通过name注入,要求对象名唯一,否则会报错--> <bean id="person" class="com.bubaiwantong.CP.Person" autowire="byName"/> </beans>

    4.2、ByType注入

    <?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 https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="dog" class="com.bubaiwantong.CP.Dog"/> <bean id="cat" class="com.bubaiwantong.CP.Cat"/> <!--autowired注入,通过name注入,要求对象名唯一,否则会报错--> <bean id="person" class="com.bubaiwantong.CP.Person" autowire="byType"/> </beans>
    Processed: 0.026, SQL: 8