[TOC]
Spring container
When you configure an object, the default singleton
The scope property of the bean can be set
- Singleton Singleton mode, only the bean is created when the IOC container is initialized and is created only once
- Prototype prototype mode, the Bean is created every time the bean is fetched, and a new object is created each time it gets
- Session share one bean per conversation
- Request to share a bean each
How to configure
- Configuration by property name corresponding to the property value
- Configuration through the construction of a class
- Can be configured by (ref) reference when a JavaBean contains properties for the image
- List,map,set
<LIST> bean= /> </LIST> <SET> <ref bean= "Beanid" /> </SET> <MAP> <entry key= "AA" value-ref= "B1" /> <entry key= "BB" value-ref= "B2" /> </MAP>
Annotation configuration
<context:component-scan base-package="com.yuing.spring1"/><!--开启自动扫描组建-->
- @Component arbitrary Java Classes
- @Controller Control Layer
- @Repository DAO Layer
- @Service Business Layer
Configure filters
- Exclude-filter does not contain filter conditions
- Include-filter contains filter conditions (the default filter should be turned off first when used
use-default-filters="false" )
- There are five types of type
| AspectJ |
assignable |
Custom |
Regex |
annotation filtering based on annotations |
|
|
|
|
Org.springframework.stereotype.Component//@Component (any one class) |
|
|
|
|
Org.springframework.stereotype.Repository//@Repository |
|
|
|
|
Org.springframework.stereotype.Service//@Service |
|
|
|
|
Org.springframework.stereotype.Controller//@Controller |
Auto-injection: @Autowire label on an object returns an object in a container
<context:component-scan base-package="包名"> <context:exclude-filter type="过滤的条件类型" expression="条件"/></context:component-scan><context:component-scan base-package="包名" use-default-filters="false"> <context:include-filter type="过滤的条件类型" expression="条件"/></context:component-scan>
To set a special value for a Bean's properties
Set the special string "<", ">"
<!-- 在value标签中的<![CDATA[value]]> 中设置属性的值 --><property name="propertyName"><value><![CDATA[<Java开发>]]></value></property>
Set empty
<property name="propertyName"> <null/></property>
Label Properties
- Bean Label Configuration JavaBean Object
- Util label Declaration (list,map,set,property)
- P Tag Bean label attribute P: Property name = "attribute value"
Context tag Load External file
Abstract: When the bean's abstract property is set to True, the bean can only be used as a template bean and not be initialized by the container.
The child bean loads the template by parent= "Beanid"
Bean's life cycle
Classpathxmlapplicationcontext The Bean is created when the container is initialized Classpathxmlapplicationcontext The bean is destroyed when it is destroyed.
Bean's Properties
init-method= "" : You can specify the initialization method that executes a bean object when the bean is loaded successfully
destroy-method= "" : You can specify how to execute a destroy in a bean object when the bean is about to be destroyed
Configure the value of the Druid Connection pool load properties file call
<context:property-placeholder location="classpath:db.properties"/>
<beanclass="Com.alibaba.druid.pool.DruidDataSource"id="DataSource"> <propertyname="username"value="${username}"/> <propertyname="Password"value="${password}"/> <propertyname="url"value="${url}"/> <propertyname="Driverclassname"value="${driverclassname}"/></bean>
Expression language of spel:spring
#{beanId} 引用其他的bean对象#{beanId.pro} 引用其他bean对象的属性值 #{beanId.methodName()} 调用方法得到返回值#{田间 ? ‘真的返回值‘ : ‘假返回值‘} 三目运算
Factory Bean (Factorybean
public class CarFactoryBean implements FactoryBean<Car> {} //以Car类为例
<bean id="car" class="com.hwua.spring02.factory.CarFactoryBean"/>
Bean Post Processor (executed before and after initialization)
Configuration:
<bean class="com.hwua.spring02.util.MyPostProcessor"/>
Java code:
Public classMypostprocessorImplementsBeanpostprocessor {@Override PublicObjectpostprocessbeforeinitialization(Object O, String s)throws //Parameter O:bean object S:bean IDbeansexception {System. out.println("Mypostprocessor.before:"+o+", S:"+s);if(OinstanceofBook) {//Is book}Else if(OinstanceofCar) {//Is car}returnO }@Override PublicObjectpostprocessafterinitialization(Object O, String s)throwsbeansexception {System. out.println("Mypostprocessor.after:"-om", S:"+s);returnO }}
Configuration of the Java factory Class (understanding)
Java code
Public classstaticcarfactory {Private StaticMap<string,car> Carmap =NewHashmap<> ();Static{Car BMW =New Car(); bmw.Setbrand("BMW"); bmw.Setprice(9.9); Car Audi =New Car(); Audi.Setbrand("Audi"); Audi.Setprice(19.9); Carmap.put("BMW", BMW); Carmap.put("Audi", Audi); } Public StaticCarCreatecar(String brand) {returnCarmap.Get(brand); }}
XML code
<!--static Factory creation objects do not require an instance of chemical plant class --<beanid="Car"class="Com.hwua.spring02.factory.StaticCarFactory"factory-method="Createcar"> <constructor-arg [name= "parameter name"]value="Audi"/></bean><!--instance factories need to first instance chemical plant<beanid="Carfactory"class="Com.hwua.spring02.factory.InstanceCarFactory"/><!--to create car objects using the factory class --<beanid="Car1"factory-bean="Carfactory"factory-method="Createcar"> <constructor-arg [name= "parameter name"]value="Audi"/></bean>
Used in the Java class:
newClassPathXmlApplicationContext("applicationContext.xml");//创建容器的对象ac.getBean(Class<T>|"IdString");//获取javaBean对象 当一个类配置了多个javabean时通过类和id可以锁定一个JavaBean
@Autowired //自动装配(默认是根据class)@Qualifier("bookServer") //根据id进行装配BookServer bookServer;
Instance
<?xmlVersion= "1.0" encoding= "UTF-8"?><beansxmlns="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" > <beanid="Person1"class="Com.yuing.spring1.User"> <propertyname="Age"value=" "/> <propertyname="Name"value="Zhang San"/> <propertyname="book"ref="B1"/> <propertyname="Book.name"value="Oracle Foundation"/> <propertyname="Book.price"value="99.8"/> </bean> <!--simple javabean--> <beanid="Person2"class="Com.yuing.spring1.User"> <constructor-argvalue="John Doe"name="Name"/> <constructor-argvalue="a"name="Age"/> </bean> <beanid="Person3"class="Com.yuing.spring1.User"> <constructor-argvalue="John Doe"index="0"/> <constructor-argvalue="a"index="1"/> </bean> <beanid="B1"class="Com.yuing.spring1.pojo.Book"> <propertyname="Name"value="Java Basics"/> <propertyname="Price"value="3.5"/> </bean></beans>
Spring IOC Common explanation