您的位置:首页技术文章
文章详情页

Spring bean 四种注入方式详解

浏览:23日期:2023-07-01 17:11:48
目录一、Set方式注入pojo层:1.xml 文件test测试二、构造函数方式注入pojo层2.xml文件test测试三、注解注入pojo层3.xml文件test测试四、JavaConfig 方式注入pojo层JavaConfig 类xml文件 扫描包测试:五、Service层注入详解serviceserviceImplxml配置文件总结一、Set方式注入pojo层:

/** * @Author: crush * @Date: 2021-06-17 16:57 * version 1.0 * xml 配置注入版本 set 方式 */public class Student1 { public String name; public String school; public void setName(String name) {this.name = name; } public void setSchool(String school) {this.school = school; } @Override public String toString() {return 'Student1{' +'name=’' + name + ’’’ +', school=’' + school + ’’’ +’}’; }}1.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' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd'> <!--set方式注入id是注入bean中的名字class 是全限定类名property 是按照set方式注入 --> <bean class='com.crush.pojo.Student1'><property name='name' value='wyh1'/><property name='school' value='hngy1'/> </bean></beans>test测试

@Test public void student1(){ApplicationContext context = new ClassPathXmlApplicationContext('student1.xml');Student1 student1 = context.getBean('student1', Student1.class);System.out.println(student1); }二、构造函数方式注入pojo层

/** * @Author: crush * @Date: 2021-06-17 17:02 * version 1.0 * xml 配置 构造函数方式注入 */public class Student2 { private String name; private String school; public Student2(String name, String school) {this.name = name;this.school = school; } @Override public String toString() {return 'Student2{' +'name=’' + name + ’’’ +', school=’' + school + ’’’ +’}’; }}2.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' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd'> <!--set方式注入id是注入bean中的名字class 是全限定类名constructor 是按照构造方式注入index 是按照成员变量在构造函数中的参数的第几个name 表示成员变量名type 表示类型value 表示值ref 表示引用 可引用另外一个注入到Spring的中的值 --> <bean class='com.crush.pojo.Student2'><constructor-arg index='0' name='name' type='java.lang.String' value='wyh2'/><constructor-arg name='school' value='hngy2'/> </bean></beans>test测试

@Test public void student2(){ApplicationContext context = new ClassPathXmlApplicationContext('student2.xml');Student2 student2 = context.getBean('student2', Student2.class);System.out.println(student2); }三、注解注入pojo层

/** * @Author: crush * @Date: 2021-06-17 17:08 * version 1.0 */@Componentpublic class Student3 { @Value('wyh3') private String name; @Value('hngy3') private String school; @Override public String toString() {return 'Student3{' +'name=’' + name + ’’’ +', school=’' + school + ’’’ +’}’; }}3.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 https://www.springframework.org/schema/context/spring-context.xsd'> <!--注解方式注入需要扫描注解在的包 注解才会生效 --> <context:component-scan base-package='com.crush.pojo'/></beans>test测试

@Test public void student3(){ApplicationContext context = new ClassPathXmlApplicationContext('student3.xml');Student3 student3 = context.getBean('student3', Student3.class);System.out.println(student3); }四、JavaConfig 方式注入pojo层

/** * @Author: crush * @Date: 2021-06-17 17:16 * version 1.0 * JavaConfig 配置 */public class Student4 { @Value('wyh4') private String name; @Value('hngy4') private String school; @Override public String toString() {return 'Student4{' +'name=’' + name + ’’’ +', school=’' + school + ’’’ +’}’; }}JavaConfig 类

@Configurationpublic class Student4Config { @Bean public Student4 student4(){return new Student4(); }}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 https://www.springframework.org/schema/context/spring-context.xsd'> <context:component-scan base-package='com.crush.config'/></beans>测试:

@Test public void student4(){ApplicationContext context = new ClassPathXmlApplicationContext('student4.xml');Student4 student4 = context.getBean('student4', Student4.class);System.out.println(student4); }五、Service层注入详解service

/** * @Author: crush * @Date: 2021-06-17 17:27 * version 1.0 * xml 配置 */public interface StudentService1 { void test();}serviceImpl

/** * @Author: crush * @Date: 2021-06-17 17:29 * version 1.0 * xml 配置 */public class StudentService1Impl implements StudentService1{ @Override public void test() {System.out.println('===StudentDao1Impl==='); }}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' xsi:schemaLocation='http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd'> <bean /></beans>总结

本篇文章就到这里了,希望能给你带来帮助,也希望能够您能够关注好吧啦网的更多内容!

标签: Spring
相关文章: