Spring 배우기(2) - Spring 프로파일 기본 속성 상세 정보
클래스를 만든 후, 클래스에 인삼이 있는 구조 함수를 작성하고,spring 프로필에서 대상을 초기화합니다.
package cn.net.bysoft.lesson1;
public class Car {
public Car() {
}
public Car(String name, int maxSpeed, String color) {
this.name = name;
this.maxSpeed = maxSpeed;
this.color = color;
}
public Car(String name, double price, String color) {
this.name = name;
this.price = price;
this.color = color;
}
@Override
public String toString() {
return "Car [name=" + name + ", maxSpeed=" + maxSpeed + ", price="
+ price + ", color=" + color + "]";
}
//getter and setter ...
private String name;
private int maxSpeed;
private double price;
private String color;
}
<?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:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.2.xsd">
<!-- bean -->
<bean id="car" class="cn.net.bysoft.lesson1.Car">
<constructor-arg index="0" value="BMW"></constructor-arg>
<constructor-arg index="1" value="100" type="int"></constructor-arg>
<constructor-arg index="2" value="Red"></constructor-arg>
</bean>
</beans>
package cn.net.bysoft.lesson1;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Lesson1Test {
private ApplicationContext ctx;
@Before
public void init() {
// Spring
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
}
@Test
public void testInitByConstructor() {
//
Car car = (Car) ctx.getBean("car");
System.out.println(car);
/**
* output: Car [name=BMW, maxSpeed=100, price=0.0, color=Red]
* */
}
}
클래스에는 두 개의 인삼을 띤 구조 함수가 있다.설정 파일에서 constructor-arg를 구조 함수의 매개 변수에 값을 부여합니다. index를 사용하여 이arg가 구조 함수 중의 몇 번째 매개 변수임을 설명하고 type으로 매개 변수 형식을 구분할 수 있습니다.
필드에 특수 문자가 있습니다.
<!-- -->
<bean id="car2" class="cn.net.bysoft.lesson1.Car">
<constructor-arg index="0">
<value><![CDATA[<Audi>]]></value>
</constructor-arg>
<constructor-arg index="1" value="500000" type="double"></constructor-arg>
<constructor-arg index="2" value="Red"></constructor-arg>
</bean>
@Test
public void testSpecialCharacter() {
//
Car car = (Car) ctx.getBean("car2");
System.out.println(car);
/**
* output:Car [name=<Audi>, maxSpeed=0, price=500000.0, color=Red]
* */
}
필드에 특수 문자가 있는 경우 코스메틱 문자열.
필드는 참조 유형입니다.
클래스의 필드가 참조 유형인 경우, 예를 들어 Person 클래스가 있는 경우, 클래스의 필드는 다음과 같이 리프 속성을 사용하여 초기화할 수 있습니다.
package cn.net.bysoft.lesson1;
public class Person {
public Person() {
}
@Override
public String toString() {
return "Person [name=" + name + ", car=" + car + "]";
}
//getter and setter
private String name;
private Car car;
}
<!-- -->
<bean id="person" class="cn.net.bysoft.lesson1.Person">
<property name="name" value="Jack"></property>
<!-- ref bean ,car2 -->
<property name="car" ref="car2"></property>
</bean>
@Test
public void testInitRef() {
Person person = (Person) ctx.getBean("person");
System.out.println(person.toString());
/**
* output:Person [name=Jack, car=Car [name=<Audi>, maxSpeed=0,
* price=500000.0, color=Red]]
*
* */
}
내부 bean을 사용하여 인용 형식의 필드를 초기화할 수 있으며 내부 bean은 인용될 수 없습니다.
<!-- bean -->
<bean id="person2" class="cn.net.bysoft.lesson1.Person">
<property name="name" value="Kobe"></property>
<!-- bean -->
<property name="car">
<bean class="cn.net.bysoft.lesson1.Car">
<constructor-arg index="0">
<value><![CDATA[<Ferrari>]]></value>
</constructor-arg>
<constructor-arg index="1" value="1000000" type="double"></constructor-arg>
<constructor-arg index="2" value="Black"></constructor-arg>
</bean>
</property>
</bean>
@Test
public void testInitRefByInner() {
Person person = (Person) ctx.getBean("person2");
System.out.println(person.toString());
/**
* output:Person [name=Kobe, car=Car [name=<Ferrari>, maxSpeed=0,
* price=1000000.0, color=Black]]
* */
}
필드를 NULL로 초기화
<!-- -->
<bean id="person3" class="cn.net.bysoft.lesson1.Person">
<property name="name" value="Mark"></property>
<!-- null -->
<property name="car">
<null />
</property>
</bean>
@Test
public void testInitRefByNull() {
Person person3 = (Person) ctx.getBean("person3");
System.out.println(person3.toString());
/**
* output:Person [name=Mark, car=null]
* */
}
종속 연결 참조 유형 필드 설정
ref를 사용하여 대상을 인용한 후 카를 사용할 수 있습니다.price, 사용 대상.필드는 참조 객체에 대해 다음과 같은 속성을 부여합니다.
<!-- -->
<bean id="person4" class="cn.net.bysoft.lesson1.Person">
<property name="name" value="Mary"></property>
<!-- null -->
<property name="car" ref="car"></property>
<!-- -->
<property name="car.price" value="250000"></property>
</bean>
@Test
public void testInitRefByCascade() {
Person person4 = (Person) ctx.getBean("person4");
System.out.println(person4.toString());
/**
* output:Person [name=Mary, car=Car [name=BMW, maxSpeed=100,
* price=250000.0, color=Red]]
* */
}
컬렉션 속성 초기화
어떤 객체에는 List 또는 Map과 같은 컬렉션 속성이 있습니다.예를 들어 하나의 Company 클래스에는 두 가지 속성이 있는데 하나는 List
package cn.net.bysoft.lesson1;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Company {
public Company() {
}
@Override
public String toString() {
return "Company [name=" + name + ", cars=" + cars + ", carList="
+ carList + "]";
}
// getter and setter
private String name;
private List<Car> cars = new ArrayList<Car>();
private Map<String, Car> carList = new HashMap<String, Car>();
}
<!-- -->
<bean id="company" class="cn.net.bysoft.lesson1.Company">
<property name="name" value="Spring"></property>
<!-- list -->
<property name="cars">
<list>
<ref bean="car" />
<ref bean="car2" />
</list>
</property>
<!-- map -->
<property name="carList">
<map>
<entry key="FirstCar" value-ref="car"></entry>
<entry key="SecondCar" value-ref="car2"></entry>
</map>
</property>
</bean>
@Test
public void testInitListOrMap() {
Company company = (Company) ctx.getBean("company");
System.out.println(company.toString());
/**
* output:Company [name=Spring, cars=[Car [name=BMW, maxSpeed=100,
* price=250000.0, color=Red], Car [name=<Audi>, maxSpeed=0,
* price=500000.0, color=Red]], carList={FirstCar=Car [name=BMW,
* maxSpeed=100, price=250000.0, color=Red], SecondCar=Car [name=<Audi>,
* maxSpeed=0, price=500000.0, color=Red]}]
* */
}
Properties 객체 초기화
spring은 우리에게java를 제공했다.util.Properties 객체의 초기화 기능, 예를 들어 데이터베이스의 연결 정보를 저장하는 DataSource 클래스가 있으면spring 프로필에서 초기화할 수 있습니다.
package cn.net.bysoft.lesson1;
import java.util.Properties;
public class DataSource {
public DataSource() {
}
@Override
public String toString() {
return "DataSource [prop=" + prop + "]";
}
// getter and setter
private Properties prop;
}
<!-- properties -->
<bean id="dataSource" class="cn.net.bysoft.lesson1.DataSource">
<property name="prop">
<props>
<prop key="user">root</prop>
<prop key="password">root</prop>
</props>
</property>
</bean>
@Test
public void testInitProperties() {
DataSource ds = (DataSource) ctx.getBean("dataSource");
System.out.println(ds.toString());
/**
* output:DataSource [prop={user=root, password=root}]
* */
}
util 탭을 사용하여 공용 데이터 설정하기
상소의 초기화 집합은 모두 bean의 내부에 있습니다. 만약에 여러 개의 bean이 같은 집합을 초기화하려면 다각적인 정의가 필요합니다.spring은 우리에게 공용 데이터의 설정을 제공했습니다.spring 설정 파일의 맨 위에 util 정보를 가져옵니다.
<?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.2.xsd">
다음에 util:list 및 util:map 정보를 구성합니다.
<!-- -->
<util:list id="util-cars-list">
<ref bean="car" />
<ref bean="car2" />
</util:list>
<util:map id="util-cars-map">
<entry key="FirstCar" value-ref="car"></entry>
<entry key="SecondCar" value-ref="car2"></entry>
</util:map>
<!-- -->
<bean id="company2" class="cn.net.bysoft.lesson1.Company">
<property name="name" value="Hibernate"></property>
<!-- list -->
<property name="cars" ref="util-cars-list"></property>
<!-- map -->
<property name="carList" ref="util-cars-map"></property>
</bean>
@Test
public void testInitByUtil() {
Company company2 = (Company) ctx.getBean("company2");
System.out.println(company2);
/**
* output:Company [name=Hibernate, cars=[Car [name=BMW, maxSpeed=100...
* */
}
p 태그 사용
p 태그의 xmlns를 가져오고 p 태그를 사용하여 객체의 속성을 초기화합니다.
xmlns:p="http://www.springframework.org/schema/p"
<bean id="xx" class="xxx.Person" p:car-ref="car" p:name="Nick"></bean>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.