Run Spring Boot Tests with application context
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ErpServerApplication.class})
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ErpServerApplication.class})
gradle bootRun
You might also want to use this useful operating system environment variable:
export JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=128M
configurations { compile.exclude module: "spring-boot-starter-tomcat" } dependencies { compile("org.springframework.boot:spring-boot-starter-web:1.4.2.RELEASE") compile("org.springframework.boot:spring-boot-starter-jetty:1.4.2.RELEASE") // ... }
Test Data
> db.users.find() { "_id" : ObjectId("id"), "ic" : "1001", "name" : "ant", "age" : 10 } { "_id" : ObjectId("id"), "ic" : "1002", "name" : "bird", "age" : 20 } { "_id" : ObjectId("id"), "ic" : "1003", "name" : "cat", "age" : 30 } { "_id" : ObjectId("id"), "ic" : "1004", "name" : "dog", "age" : 40 } { "_id" : ObjectId("id"), "ic" : "1005", "name" : "elephant", "age" : 50 } { "_id" : ObjectId("id"), "ic" : "1006", "name" : "frog", "age" : 60 }
BasicQuery example
BasicQuery query1 = new BasicQuery("{ age : { $lt : 40 }, name : 'cat' }"); User userTest1 = mongoOperation.findOne(query1, User.class); System.out.println("query1 - " + query1.toString()); System.out.println("userTest1 - " + userTest1);
findOne example
Query query2 = new Query(); query2.addCriteria(Criteria.where("name").is("dog").and("age").is(40)); User userTest2 = mongoOperation.findOne(query2, User.class); System.out.println("query2 - " + query2.toString()); System.out.println("userTest2 - " + userTest2);
find and $inc example
List<Integer> listOfAge = new ArrayList<Integer>(); listOfAge.add(10); listOfAge.add(30); listOfAge.add(40); Query query3 = new Query(); query3.addCriteria(Criteria.where("age").in(listOfAge)); List<User> userTest3 = mongoOperation.find(query3, User.class); System.out.println("query3 - " + query3.toString()); for (User user : userTest3) { System.out.println("userTest3 - " + user); }
find and $gt, $lt, $and example
Query query4 = new Query(); query4.addCriteria(Criteria.where("age").lt(40).and("age").gt(10)); List<User> userTest4 = mongoOperation.find(query4, User.class); System.out.println("query4 - " + query4.toString()); for (User user : userTest4) { System.out.println("userTest4 - " + user); }
You can’t use Criteria.and() to add multiple criteria into the same field, to fix it, use Criteria.andOperator(), see updated example :
Query query4 = new Query(); query4.addCriteria( Criteria.where("age").exists(true) .andOperator( Criteria.where("age").gt(10), Criteria.where("age").lt(40) ) ); List<User> userTest4 = mongoOperation.find(query4, User.class); System.out.println("query4 - " + query4.toString()); for (User user : userTest4) { System.out.println("userTest4 - " + user); }
find and sorting example
Query query5 = new Query(); query5.addCriteria(Criteria.where("age").gte(30)); query5.with(new Sort(Sort.Direction.DESC, "age")); List<User> userTest5 = mongoOperation.find(query5, User.class); System.out.println("query5 - " + query5.toString()); for (User user : userTest5) { System.out.println("userTest5 - " + user); }
find and $regex example
Query query6 = new Query(); query6.addCriteria(Criteria.where("name").regex("D.*G", "i")); List<User> userTest6 = mongoOperation.find(query6, User.class); System.out.println("query6 - " + query6.toString()); for (User user : userTest6) { System.out.println("userTest6 - " + user); }
Method 2 : Generated Query Methods
public interface UserRepository extends MongoRepository<User, String>, QueryDslPredicateExecutor<User> { ... }
References
https://www.mkyong.com/mongodb/spring-data-mongodb-query-document/
http://www.baeldung.com/queries-in-spring-data-mongodb
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/geany 10
sudo update-alternatives --config editor
/usr/share/applications/defaults.list
– the system defaults list.
~/.local/share/applications/mimeapps.list
– the users personal desktop session defaults list
References
http://askubuntu.com/questions/194712/how-do-i-make-geany-my-default-editor-on-ubuntu
Thread t1 = new Thread(new Runnable() { public void run() { // code goes here. } }); t1.start();
Executors.newSingleThreadExecutor().execute(new Runnable() { @Override public void run() { myCustomMethod(); } });
Executors.newCachedThreadPool().execute(new Runnable() { @Override public void run() { myCustomMethod(); } });
References
http://stackoverflow.com/questions/3489543/how-to-call-a-method-with-a-separate-thread-in-java
Inject your beans
@Controller public class MileageFeeController { @Autowired private MileageFeeCalculator calc; @RequestMapping("/mileage/{miles}") @ResponseBody public float mileageFee(@PathVariable int miles) { return calc.mileageCharge(miles); } }
Use @Configurable
@Service @Configurable public class MileageFeeCalculator { @Autowired private MileageRateService rateService; public float mileageCharge(final int miles) { return (miles * rateService.ratePerMile()); } }
Manual bean lookup: not recommended
@Component public class ApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } public static ApplicationContext getContext() { return context; } }
@Controller public class MileageFeeController { @RequestMapping("/mileage/{miles}") @ResponseBody public float mileageFee(@PathVariable int miles) { MileageFeeCalculator calc = ApplicationContextHolder.getContext().getBean(MileageFeeCalculator.class); return calc.mileageCharge(miles); } }
References
http://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-field-null
; Global settings for redshift [redshift] ; Set the day and night screen temperatures temp-day=5700 temp-night=3500 ; Enable/Disable a smooth transition between day and night ; 0 will cause a direct change from day to night screen temperature. ; 1 will gradually increase or decrease the screen temperature. transition=1 ; Set the screen brightness. Default is 1.0. ;brightness=0.9 ; It is also possible to use different settings for day and night ; since version 1.8. ;brightness-day=0.7 ;brightness-night=0.4 ; Set the screen gamma (for all colors, or each color channel ; individually) gamma=0.8 ;gamma=0.8:0.7:0.8 ; This can also be set individually for day and night since ; version 1.10. ;gamma-day=0.8:0.7:0.8 ;gamma-night=0.6 ; Set the location-provider: 'geoclue', 'geoclue2', 'manual' ; type 'redshift -l list' to see possible values. ; The location provider settings are in a different section. location-provider=manual ; Set the adjustment-method: 'randr', 'vidmode' ; type 'redshift -m list' to see all possible values. ; 'randr' is the preferred method, 'vidmode' is an older API. ; but works in some cases when 'randr' does not. ; The adjustment method settings are in a different section. adjustment-method=randr ; Configuration of the location-provider: ; type 'redshift -l PROVIDER:help' to see the settings. ; ex: 'redshift -l manual:help' ; Keep in mind that longitudes west of Greenwich (e.g. the Americas) ; are negative numbers. [manual] lat=48.1 lon=11.6 ; Configuration of the adjustment-method ; type 'redshift -m METHOD:help' to see the settings. ; ex: 'redshift -m randr:help' ; In this example, randr is configured to adjust screen 1. ; Note that the numbering starts from 0, so this is actually the ; second screen. If this option is not specified, Redshift will try ; to adjust _all_ screens. [randr] screen=1
References
http://jonls.dk/redshift/
References
https://studgeek.com/2010/08/16/intellijidea-webstorm-knockout-data-bind-attributes/