@Data
public class Hello {
public String str;
}
<?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">
<!--使用Spring来创建对象,在Spring中这些都称为Bean-->
<bean id="hello" class="com.yhr.pojo.Hello">
<property name="str" value="Spring"/>
</bean>
</beans>
@Test
public void test(){
//获取Spring的容器,通过容器获取对象
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Hello hello = context.getBean("hello", Hello.class);
System.out.println(hello);
}
<property name="name" value="yhr"/>
<constructor-arg index="0" value="yhr"/>
<constructor-arg type="java.lang.String" value="yhr"/>
<constructor-arg name="name" value="yhr"/>
<alias name="user" alias="abc"/>
@Data
public class Address {
private String address;
}
@Data
public class Student {
private String name;
private Address address;
private String[] books;
private List<String> hobbies;
private Map<String, String> cards;
private Set<String> games;
private String wife;
private Properties info;
}
<bean id="address" class="com.yhr.pojo.Address">
<property name="address" value="成华大道"/>
</bean>
<bean id="student" class="com.yhr.pojo.Student">
<!--普通注入,value-->
<property name="name" value="yhr"/>
<!--bean注入,ref-->
<property name="address" ref="address"/>
<!--数组注入-->
<property name="books">
<array>
<value>西游记</value>
<value>三国演义</value>
<value>水浒传</value>
<value>红楼梦</value>
</array>
</property>
<!--List注入-->
<property name="hobbies">
<list>
<value>听歌</value>
<value>敲代码</value>
<value>看电影</value>
</list>
</property>
<!--Map注入-->
<property name="cards">
<map>
<entry key="身份证" value="123456"/>
<entry key="银行卡" value="234567"/>
</map>
</property>
<!--Set注入-->
<property name="games">
<set>
<value>LOL</value>
<value>DOTA2</value>
</set>
</property>
<!--null值注入-->
<property name="wife">
<null/>
</property>
<!--Properties注入-->
<property name="info">
<props>
<prop key="学号">202022010314</prop>
<prop key="性别">男</prop>
</props>
</property>
</bean>
xmlns:p="http://www.springframework.org/schema/p"
<!--p命名空间注入,可以直接注入属性的值:property-->
<bean id="user" class="com.yhr.pojo.User" p:name="yhr" p:age="18"/>
xmlns:c="http://www.springframework.org/schema/c"
<!--c命名空间注入,可以直接通过构造器注入:constructor-arg-->
<bean id="user2" class="com.yhr.pojo.User" c:name="yhr" c:age="18"/>
<bean id="cat" class="com.yhr.pojo.Cat"/>
<bean id="dog" class="com.yhr.pojo.Dog"/>
<bean id="people" class="com.yhr.pojo.People" autowire="byName">
<property name="name" value="yhr"/>
</bean>
会自动在容器上下文中查找,和自己对象属性类型相同的bean
可以没有id,但必须保证类型唯一
<bean id="cat" class="com.yhr.pojo.Cat"/>
<bean id="dog111" class="com.yhr.pojo.Dog"/>
<bean id="people" class="com.yhr.pojo.People" autowire="byType">
<property name="name" value="yhr"/>
</bean>
jdk1.5支持注解,Spring2.5支持注解
导入context约束
配置注解的支持<context:annotation-config/>
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
</beans>
@Autowired
注解修饰属性,需要有参构造
@Autoowired(required=false)
表示属性可以为空
@Nullable
修饰构造函数中的参数,参数可以为空@Qualifier(value = "")
显式指定bean的id
@Resource
java自带的注解,也可以实现自动装配
<!--扫描指定的包-->
<context:component-scan base-package=""/>
@Component
修饰类,等价于注册了一个bean,id为类名小写@Value("yhr")
修饰属性,相当于property标签@Autowired
@Component
有几个功能相同的衍生注解,在web开发中,按照MVC三层架构分层:
@Repository
@Service
@Controller
@Scope("")
:value中填写作用域@Configuration
public class AppConfig {
@Bean
public User getUser(){
return new User();
}
}
方法名为bean的id,返回值为bean的类
也可以使用@ComponentScan("package")
进行扫描,就不需要写方法注册了
测试时使用new AnnotationConfigApplicationContext(AppConfig.class)
来获取上下文
使用@Import(AppConfig2.class)
来引用另一个配置类
原文:https://www.cnblogs.com/xiafrog/p/14369002.html